繁体   English   中英

从前端接收 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)。 我怎样才能使它获得正确的文化/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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM