¿Cómo convertir DateTime a / desde un formato de cadena específico (en ambos sentidos, por ejemplo, el formato dado es "aaaaMMdd")?


132

Tengo un problema para convertir una fecha y hora que está en formato de cadena, pero no puedo convertirla usando el "yyyyMMdd"formato.

Mi código es:

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;

¿En qué formato está la cadena de fecha y hora en este momento?
Falle1234

11
¿Y cuál es la relevancia de su fragmento de código para la pregunta?
Darin Dimitrov

2
Estoy un poco confuso; ¿Está trabajando con una representación de cadena de una fecha o un objeto DateTime? Asumiendo que es un objeto DateTime, simplemente puede llamar obj.ToString("yyyyMMdd");
Nathan Taylor el

En realidad, TPOCDate2 ya es una variable y solo quiero convertir los elementos en tpoc2 [0] para que estén en el formato aaaaMMdd. Espero que esto responda tu pregunta
Ashutosh

¿Estás atrapado en alguna parte?
Dariusz Woźniak

Respuestas:


224

si tiene una fecha en una cadena con el formato "ddMMyyyy" y desea convertirla a "aaaaMMdd", puede hacer lo siguiente:

DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy", 
                                  CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");

44
Se quedó atascado con su código, este funcionó bien DateTime. TryParse (stringValue, out outputInDateTime);
DJ '

64

Fecha y hora de análisis:

Para analizar un DateTime, use uno de los siguientes métodos:

Alternativamente, puede usar el patrón try-parse :

Lea más sobre cadenas de formato de fecha y hora personalizadas .

Convertir DateTime en una cadena:

Para devolver un DateTime como una cadena en formato "aaaaMMdd", puede usar el ToStringmétodo.

  • Ejemplo de fragmento de código: string date = DateTime.ToString("yyyyMMdd");
  • Tenga en cuenta que las M en mayúsculas se refieren a meses y las m en minúsculas a minutos.

Tu caso:

En su caso, suponiendo que no desea manejar el escenario cuando la fecha es de formato diferente o error, sería más conveniente usar ParseExact:

string dateToParse = "20170506";
DateTime parsedDate = DateTime.ParseExact(dateToParse, 
                                          "yyyyMMdd",
                                          CultureInfo.InvariantCulture);

77
Este es un tema antiguo, pero para aquellos que buscan, el enlace de arriba, "formato específico de cultura" ahora es un enlace muerto. Aquí hay uno que es actual e informativo Cadenas de formato de fecha y hora personalizadas

40

Puede convertir su cadena a un DateTimevalor como este:

DateTime date = DateTime.Parse(something);

Puede convertir un DateTimevalor a una cadena formateada como esta:

date.ToString("yyyyMMdd");

11

Cadena al formato de fecha aaaa-MM-dd: Ejemplo:

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

10

Si desea tener FECHA como cadena con HORA también. Podemos hacer así:

    //Date and Time is taking as current system Date-Time    
    DateTime.Now.ToString("yyyyMMdd-HHmmss");

77
minutos deben ser pequeños "m"? "aaaaMMdd-HHmmss"
CeOnSql

6

Úselo DateTime.TryParseExact()si desea hacer coincidir un formato de fecha específico

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

5

Podrías usar en DateTime.TryParse()lugar de DateTime.Parse().
Con TryParse()usted tiene un valor de retorno si fue exitoso y con Parse()usted tiene que manejar una excepción


5

Simplemente hazlo de esta manera.

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

Feliz codificación :)


3

no, es una cadena con aaaa / mm / dd y la necesito en formato aaaaMMdd

Si solo necesita eliminar las barras de una cadena, ¿no las reemplaza?

Ejemplo:

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

myDateString ahora debería ser "20130328".

Menos de una exageración :)


3

Es la forma simple de convertir a formato

 DateTime.Now.ToString("yyyyMMdd");

2

Según los nombres de propiedad, parece que está intentando convertir una cadena en una fecha por asignación:

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

Probablemente se deba a la cultura actual de la interfaz de usuario y, por lo tanto, no puede interpretar la cadena de fecha correctamente cuando se asigna.


no, es una cadena con aaaa / mm / dd y la necesito en formato aaaaMMdd
Ashutosh

y al hacer claimantAuxillaryRecord.TPOCDate2 = tpoc2 [0] .ToString ("aaaaMMdd"); da algunos errores de compilación. La mejor coincidencia de método sobrecargado para 'string.ToString (System.IFormatProvider)' tiene algunos argumentos no válidos
Ashutosh

@ Matt - ¿en serio? ¿Editó una respuesta de más de 4 años que ni siquiera se marcó como la respuesta para agregar una pestaña? Ese es un grave caso grave de TOC que tienes allí.
Peter

1

De C # 6:

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

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


0

También encontré una forma más simple mientras buscaba esta respuesta;

string date = DateTime.Now.ToString("yyyyMMdd", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

¿Qué tal si tengo un valor para DateTime? Al igual que DateTime newDate = DateTime.Parse(Session["date"].ToString());?
WTFZane

0

Puedes probar estos códigos

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

O

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

1
Por el amor de Dios (nuestro señor salvador Harambe), nunca use Convert.ToDateTime ... ¡Esto es tan lento (~ 100ms)! Simplemente use ParseExact o TryParse - ¡muuuucho más rápido!
Koshera el
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.