Я пишу код, в котором у меня есть DateTime в UTC, и мне нужно отобразить это как LocalTime, где у меня есть объект Culture для двух часовых поясов.Работа с временными зонами DateTime
Вот мой код:
public void CultureDateTimeLocalTime()
{
DateTime dateTimeUtcNow = DateTime.UtcNow;
DateTime convertedDate = DateTime.SpecifyKind(dateTimeUtcNow, DateTimeKind.Utc);
DateTime dateTimeLocalTime = convertedDate.ToLocalTime();
String format = "MM/dd/yyyy hh:mm:sszzz";
string localTime = dateTimeLocalTime.ToString(format);
CultureInfo cultureNZ = new CultureInfo("en-NZ");
CultureInfo cultureUS = new CultureInfo("en-US");
DateTime DateTimeNZ;
bool parseNZ = DateTime.TryParse(localTime, cultureNZ, DateTimeStyles.None, out DateTimeNZ);
string outputNZ = DateTimeNZ.ToString("F");
DateTime DateTimeUS;
bool parseUS = DateTime.TryParse(localTime, cultureUS, DateTimeStyles.None, out DateTimeUS);
string outputUS = DateTimeUS.ToString("F");
}
public void CultureDateTimeLocalTime2()
{
DateTime dateTimeUtcNow = DateTime.UtcNow;
DateTime convertedDate = DateTime.SpecifyKind(dateTimeUtcNow, DateTimeKind.Utc);
DateTime dateTimeLocalTime = convertedDate.ToLocalTime();
String format = "MM/dd/yyyy hh:mm:sszzz";
string localTime = dateTimeLocalTime.ToString(format);
CultureInfo cultureNZ = new CultureInfo("en-NZ");
CultureInfo cultureUS = new CultureInfo("en-US");
DateTime DateTimeNZ = DateTime.ParseExact(localTime, format, cultureNZ.DateTimeFormat);
string outputNZ = DateTimeNZ.ToString("F");
DateTime DateTimeUS = DateTime.ParseExact(localTime, format, cultureUS.DateTimeFormat);
string outputUS = DateTimeUS.ToString("F");
}
В обеих функциях, то outputNZ
и outputUS
одинаковы. Почему это?
Заранее спасибо.
Спасибо за ваш ответ. – user3736648
TL; DR: вместо использования 'DateTime dateTimeLocalTime = utcDate.ToLocalTime();', используйте 'TimeZoneInfo.ConvertTimeFromUtc' для преобразования часового пояса. – Fendy