2010-03-10 41 views
10

Tal vez estoy viendo cosas ..Conversión de la hora a militar

En un intento de convertir una fecha con un formato de "mm/dd/yyyy hh:mm:ss PM" en tiempo militar, no parece la siguiente sustitución de un valor de fila para tomar. Aunque estoy seguro de haber hecho esto antes (con valores de columna que no sean fechas). ¿Hay algún motivo por el que row["adate"] no acepte un valor asignado en este caso?

DateTime oos = DateTime.Parse(row["adate"].ToString()); 

row["adate"] = oos.Month.ToString() 
       + "/" 
       + oos.Day.ToString() 
       + "/" 
       + oos.Year.ToString() 
       + " " 
       + oos.Hour.ToString() 
       + ":" 
       + oos.Minute.ToString(); 
+1

Off-Topic: Es posible que desee echar un vistazo a formato de fecha: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx – dbemerlin

+5

'fila [ "AFecha" ] = oos.ToString ("MM/dd/YYYY HH: mm") 'podría ser mejor –

+0

@Philip Fourie: row [" adate "]. Text = oos.ToString (" MM/dd/YYYY HH: mm ") publicarlo como una respuesta y obtener cierta reputación! :) –

Respuesta

21

En lugar de dar formato a la cadena de forma manual, se debe utilizar:

oos.ToString("M/d/yyyy HH:mm"); 

Además, ¿qué quiere decir con "no aceptaría un valor"? ¿Estás recibiendo una excepción? Si es así, ¿cuál es el mensaje de error?

+0

¡Gracias! DateTime tiene un ToString que toma un formato, excelente. – Chris

3

Trate

row["adate"].Text = oos.ToString("MM/dd/YYYY HH:mm"); 
0

Si tiene este tiempo: 07:12:02 PM y quiere esto: 19:12:02 PM, ¡este es el código para usted!

using System; 
using System.Collections.Generic; 
using System.IO; 
using System.Linq; 
class Solution { 

    static string timeConversion(string s) { 
     DateTime dateTime = DateTime.ParseExact(s, "hh:mm:sstt", 
     System.Globalization.CultureInfo.InvariantCulture); 

     return (dateTime.ToString("HH:mm:ss")); 
    } 

    static void Main(String[] args) { 
     string s = Console.ReadLine(); 
     string result = timeConversion(s); 
     Console.WriteLine(result); 
    } 
} 
0

En C#> = 6.0 puede utilizar la interpolación de cadenas, así si es necesario agregar algo alrededor de su fecha. Algo así como:

row["adate"] = $"S: {StartDateTime:yyyy-MM-dd HH:mm:ss}"; 
Cuestiones relacionadas