2010-03-10 2 views
10

Может быть, я вижу вещи ..Преобразование времени в военных

В попытке превратить дату с форматом "mm/dd/yyyy hh:mm:ss PM" в военное время, следующая замена значения строки, кажется, не брать. Хотя я уверен, что сделал это раньше (со значениями столбцов, отличными от дат). Есть ли какая-то причина, что row["adate"] не принял значение, присвоенное ему в этом случае?

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: Вы можете посмотреть на дату Форматирование: http://msdn.microsoft.com/en-us/library/az4se3k1.aspx – dbemerlin

+5

'строка [ "adate" ] = oos.ToString ("MM/dd/YYYY HH: mm") 'может быть лучше –

+0

@Philip Fourie: row [" adate "]. Text = oos.ToString (" MM/dd/YYYY HH: mm ") опубликуйте его как ответ и получите какую-то репутацию! :) –

ответ

21

Вместо ручного форматирования строки, вы должны использовать:

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

Кроме того, что вы подразумеваете под «не принимали значения»? Вы получаете исключение? Если да, то каково сообщение об ошибке?

+0

Спасибо! DateTime имеет ToString, который принимает формат, отлично. – Chris

3

Попробуйте

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

Да, и все люди, отправляющие свои MM/dd/yyyy-решения, тоже должны пойти и посмотреть на http: // msdn .microsoft.com/en-us/library/8kb3ddd4.aspx # dateSeparator и различия между примерами MM и M – prostynick

0

Если у вас есть это время: 07:12:02 PM, и вы хотите: 19:12:02 PM, тогда это код для вас!

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

В C#> = 6.0 вы можете использовать интерполяцию строки, а если вам нужно добавить что-то вокруг даты. Что-то вроде:

row["adate"] = $"S: {StartDateTime:yyyy-MM-dd HH:mm:ss}"; 
Смежные вопросы