Преобразование времени в военные

Может быть, я вижу вещи..

При попытке превратить дату с форматом "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

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

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

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

Ответ 3

Попробуйте

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

Ответ 4

Если у вас есть это время: 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);
    }
}

Ответ 5

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

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