从前端接收到 GMT +0 日期字符串时,如何在后端将其设为 GMT +2 日期对象?
When receiving a GMT +0 date string from front-end, how do I make it a GMT +2 Date object in my back-end?
我从前端收到的是这样的:
"date": "2021-06-04T22:00:00.000Z"
这是 GMT+0 的日期时间。我现在如何在我的后端将它转换为 Date 对象,使其成为 2021/06/05"(6 月 5 日,午夜)?
这是我目前的情况:
CultureInfo culture = new CultureInfo("nl-BE");
...
var entity = _mapper.Map<HolidayDate>(h);
entity.Date = Convert.ToDateTime(entity.Date, culture);
_holidayDateRepository.Add(entity);
所以我将文化设置为我的文化 (GMT +2)。然后,我将我的前端 DTO 映射到此处的实体对象“HolidayDate”。然后我想更改日期,它现在有错误的值 (GMT +0)。我怎样才能让它获得正确的 culture/GMT+ +2 日期?
我是在我的后端代码中这样做,还是可以在我的 AutoMapper 配置中或其他方式中设置?
试试这个方法。
private static DateTime ToLocalTime(string utcDateTimeString, string timeZoneString)
{
var utcDateTime = DateTime.Parse(utcDateTimeString);
var utcDateKind = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Utc);
var timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneString);
var localTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateKind, timeZone);
return localTime;
}
用法;
public static void Main()
{
var utcTimeString = "2021-06-04T22:00:00.000Z";
var localDateTime = ToLocalTime(utcTimeString, "South Africa Standard Time");
Console.WriteLine(localDateTime);
}
时区名称列表。
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones
我从前端收到的是这样的:
"date": "2021-06-04T22:00:00.000Z"
这是 GMT+0 的日期时间。我现在如何在我的后端将它转换为 Date 对象,使其成为 2021/06/05"(6 月 5 日,午夜)?
这是我目前的情况:
CultureInfo culture = new CultureInfo("nl-BE");
...
var entity = _mapper.Map<HolidayDate>(h);
entity.Date = Convert.ToDateTime(entity.Date, culture);
_holidayDateRepository.Add(entity);
所以我将文化设置为我的文化 (GMT +2)。然后,我将我的前端 DTO 映射到此处的实体对象“HolidayDate”。然后我想更改日期,它现在有错误的值 (GMT +0)。我怎样才能让它获得正确的 culture/GMT+ +2 日期?
我是在我的后端代码中这样做,还是可以在我的 AutoMapper 配置中或其他方式中设置?
试试这个方法。
private static DateTime ToLocalTime(string utcDateTimeString, string timeZoneString)
{
var utcDateTime = DateTime.Parse(utcDateTimeString);
var utcDateKind = DateTime.SpecifyKind(utcDateTime, DateTimeKind.Utc);
var timeZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneString);
var localTime = TimeZoneInfo.ConvertTimeFromUtc(utcDateKind, timeZone);
return localTime;
}
用法;
public static void Main()
{
var utcTimeString = "2021-06-04T22:00:00.000Z";
var localDateTime = ToLocalTime(utcTimeString, "South Africa Standard Time");
Console.WriteLine(localDateTime);
}
时区名称列表。 https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/default-time-zones