saikumart Ответов: 2

Как я могу получить вывод в виде даты со временем+05: 30 в date time, но не в строке


var dt = DateTime.Now.ToString("o");
           DateTime date = DateTime.ParseExact(dt, "yyyy-MM-dd HH:mm:ss,fff", System.Globalization.CultureInfo.InvariantCulture);
           Console.WriteLine(date);
           Console.ReadLine();


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

Я получаю вывод как 2017-08-21T12:48: 33 PM, но я хочу выводить как 2017-08-21T12:48: 33.3060423+05: 30 (т. е. в дате времени, а не в строке)

2 Ответов

Рейтинг:
1

OriginalGriff

Ты не можешь. Значения DateTime не имеют связанного с ними формата - это просто количество тиков с определенного момента времени. Они приобретают любой формат только в смысле лет, месяцев, дней или даже миллисекунд, когда они форматируются в строку для представления.
Чтобы отформатировать дату и время так, как вы хотите, попробуйте:

Console.WriteLine(date.ToString("yyyy-MM-ddTHH:mm:ss.fffffffzzz"));


[edit]MM и SS изменены на mm и ss -: O [/edit]


Richard Deeming

Вам понадобятся строчные буквы M и S на минуты и секунды. :)

OriginalGriff

:до:

Исправлено.

Рейтинг:
0

BillWoodruff

Для простых конверсий, когда вы уверены, что все ваши пользователи используют одни и те же текущие настройки культуры:

using System.Globalization;

public string FormatIndiaTime(DateTime dt)
{
    return dt.ToString("yyyy-MM-ddThh:mm:ss.ffffff+05:30");
}

// sample use in some method
var dtUTC = TimeZoneInfo.ConvertTime(DateTime.Now, TimeZoneInfo.Utc);

var dtIndia = TimeZoneInfo.ConvertTime(dtUTC, TimeZoneInfo.FindSystemTimeZoneById("India Standard Time"));

Console.WriteLine(FormatIndiaTime(dtIndia));

// sample output: 2017-10-22T05:10:39.494879+05:30

var utcFromIST = TimeZoneInfo.ConvertTimeToUtc(dtIndia, TimeZoneInfo.Utc);
Вы ищете больше, чем это ?