Como converter DateTime para / de um formato de string específico (nos dois sentidos, por exemplo, dado que o Format é "aaaamMdd")?

132

Estou tendo um problema ao converter um datetime que está no formato de string, mas não consigo convertê-lo usando o "yyyyMMdd"formato.

Meu código é:

string tpoc = refSubClaim.BenefitsFolder.BenefitFolderIdNumber.ToString();
string[] tpocinfo = Regex.Split(tpoc,";");

for (int i = 0; i < tpocinfo.Length; i++)
{
    switch (i)
    {
        case 0:
        {
            string[] tpoc2 = Regex.Split(tpocinfo[0], ",");
            claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();
            claimantAuxillaryRecord.TPOCAmount2 = Convert.ToDecimal(tpoc2[1]);
            claimantAuxillaryRecord.FundingDelayedBeyondTPOCStartDate2 = tpoc2[2].ToString();
        }
        break;
Ashutosh
fonte
Em que formato está a string datetime agora?
precisa saber é o seguinte
11
E qual é a relevância do seu trecho de código para a pergunta?
precisa saber é o seguinte
2
Eu sou um pouco claro; você está trabalhando com uma representação de seqüência de caracteres de uma data ou um objeto DateTime? Supondo que seja um objeto DateTime, você pode simplesmente chamar obj.ToString("yyyyMMdd");
Nathan Taylor
Na verdade, o TPOCDate2 já é uma variável e eu apenas quero converter os elemnts em tpoc2 [0] para estar no formato aaaamMMdd. Espero que isso responde a sua pergunta
Ashutosh
Você está preso em algum lugar?
Dariusz Woźniak

Respostas:

224

se você tem uma data em uma string com o formato "ddMMyyyy" e deseja convertê-la em "aaaamMMdd", você pode fazer o seguinte:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");
Falle1234
fonte
4
Fiquei preso com o seu código, este funcionou bem DateTime.TryParse (stringValue, out outputInDateTime);
DJ '
64

Data e hora da análise:

Para analisar um DateTime, use um dos seguintes métodos:

Como alternativa, você pode usar o padrão try-parse :

Leia mais sobre strings personalizadas de formato de data e hora .

Convertendo DateTime em uma string:

Para retornar um DateTime como uma seqüência de caracteres no formato "aaaaMMdd", você pode usar o ToStringmétodo

  • Exemplo de trecho de código: string date = DateTime.ToString("yyyyMMdd");
  • Nota M ' maiúsculas ' referem-se a meses e m ' minúsculas ' a minutos.

Seu caso:

No seu caso, supondo que você não queira lidar com o cenário em que a data tenha um formato ou erro diferente, seria mais conveniente usar ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);
Dariusz Woźniak
fonte
7
Este é um tópico antigo, mas para aqueles que pesquisam, o link acima, "formato específico da cultura", agora é um link morto. Aqui está uma que é atual e informativo do costume e Hora cadeias de formato
40

Você pode converter sua string para um DateTimevalor como este:

DateTime date = DateTime.Parse(something);

Você pode converter um DateTimevalor em uma string formatada como esta:

date.ToString("yyyyMMdd");
SLaks
fonte
11

Sequência para o formato de data aaaa-MM-dd: Exemplo:

TxtCalStDate.Text = Convert.ToDateTime(objItem["StartDate"]).ToString("yyyy/MM/dd");   
NSiva
fonte
10

Se você deseja ter DATE como string também com TIME . Podemos fazer assim:

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");
Anish
fonte
7
minutos shoulde ser pequeno "m"!? "yyyyMMdd-HHmmss"
CeOnSql 25/01
6

Use DateTime.TryParseExact()se desejar corresponder a um formato de data específico

   string format = "yyyyMMdd"; 
    DateTime dateTime;
    DateTime.TryParseExact(dateString, format, CultureInfo.InvariantCulture,
                                             DateTimeStyles.None, out dateTime);
Mudassir Hasan
fonte
5

Você poderia usar em DateTime.TryParse()vez de DateTime.Parse().
Com TryParse()você tem um valor de retorno se foi bem-sucedido e com Parse()você tem que lidar com uma exceção

Peter
fonte
5

Simplesmente faça desta maneira.

string yourFormat = DateTime.Now.ToString("yyyyMMdd");

Feliz codificação :)

Prashant-Systematix
fonte
3

não é uma string com aaaa / mm / dd e eu preciso dela no formato aaaaMMdd

Se você só precisa remover as barras de uma corda, não as substitui?

Exemplo:

myDateString = "2013/03/28";
myDateString = myDateString.Replace("/", "");

myDateString agora deve ser "20130328".

Menos exagero :)

SergioMSCosta
fonte
3

É a maneira simples de converter para o formato

 DateTime.Now.ToString("yyyyMMdd");
manoj kumar
fonte
2

Com base nos nomes das propriedades, parece que você está tentando converter uma string em uma data por atribuição:

claimantAuxillaryRecord.TPOCDate2 = tpoc2[0].ToString();

Provavelmente, é devido à cultura atual da interface do usuário e, portanto, não pode interpretar a sequência de datas corretamente quando atribuída.

Peter
fonte
não é uma string com aaaa / mm / dd e eu preciso dele no formato AAAAMMDD
Ashutosh
e ao executar claimantAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("aaaaMMdd"); dá alguns erros de construção. A melhor correspondência método sobrecarregado para 'string.ToString (System.IFormatProvider)' tem alguns argumentos inválidos
Ashutosh
@ Mat - realmente? Você editou uma resposta de mais de 4 anos que nem foi marcada como resposta para adicionar uma guia? Esse é um caso grave e grave de TOC que você tem lá.
Peter Peter
1

A partir do C # 6:

var dateTimeUtcAsString = $"{DateTime.UtcNow:o}";

O resultado será: "2019-01-15T11: 46: 33.2752667Z"

ben alfasi
fonte
0

Uma maneira mais simples de me deparar ao procurar essa resposta também;

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));
Enrique Ortiz Sánchez
fonte
Que tal eu ter um valor DateTime? Gosta DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane
0

Você pode tentar estes códigos

claimantAuxillaryRecord.TPOCDate2  = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd"); 

Ou

claimantAuxillaryRecord.TPOCDate2 = Convert.ToDateTime(tpoc2[0]).ToString("yyyyMMdd hh:mm:ss"); 
A. Zalonis
fonte
1
Pelo amor de Deus (nosso senhor salvador Harambe), nunca use Convert.ToDateTime ... Essa coisa é tão lenta (~ 100ms)! Basta usar ParseExact ou TryParse - waaaaay mais rápido !!!
Koshera 4/11