Telstra Ответов: 3

Как преобразовать строку в формат даты и времени в C#


Привет,

У меня есть строка, подобная приведенной ниже, которую я конвертирую в формат datetime. Я попытался сделать это следующим образом. Есть ли другой способ сделать это? Ожидаемый результат строки после форматирования должен быть таким: гггг-ММ-ДД чч:мм:СС МС.

Что я уже пробовал:

StringBuilder myStringBuilder = новый StringBuilder("20180215031530000");
myStringBuilder = myStringBuilder.Вставить(4, "-");
myStringBuilder = myStringBuilder.Вставить(7, "-");
myStringBuilder = myStringBuilder.Вставить(10, " ");
myStringBuilder = myStringBuilder.Вставить(13, ":");
myStringBuilder = myStringBuilder.Вставить(16, ":");
myStringBuilder = myStringBuilder.Вставить(19, ".");
DateTime dt = конвертировать.Объект todatetime(myStringBuilder.Метод toString());

3 Ответов

Рейтинг:
24

Richard MacCutchan

Видеть значение datetime.Метод TryParse (Система) | Microsoft Docs[^] для лучшего метода.


Рейтинг:
14

TheRealSteveJudge

В дополнение к решению 1 приведем конкретный пример:

var originalTimeString = "20180215031530000";

DateTime dt;

var success = DateTime.TryParseExact(originalTimeString, "yyyyMMddhhmmssfff", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt);

if (success)
{
    var newTimeString = dt.ToString("yyyy-MM-dd hh:mm:ss fff");
}

Тем не менее, пожалуйста, ознакомьтесь с предложенной документацией.


Рейтинг:
12

OriginalGriff

Не делай этого.
Воспользуйся значение datetime.Метод tryparseexact[^] вместо вставки разделителей:

string input = "20180215031530000";
DateTime dt;
if (!DateTime.TryParseExact(input, "yyyyMMddHHmmssfff", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt))
    {
    Console.WriteLine("Problem with input date");
    return;
    }
Console.WriteLine(dt);


Richard MacCutchan

Черт, я пропустил это, должен прокрутить дальше.