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;

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");

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);

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");

11

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

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

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");

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);

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


5

Simplesmente faça desta maneira.

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

Feliz codificação :)


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 :)


3

É a maneira simples de converter para o formato

 DateTime.Now.ToString("yyyyMMdd");

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.


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"


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"));

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"); 

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.