我正在开发一个WebAPI。我有一个叫做赋值的实体。赋值有一个名为datesscheduled的属性,它是一个长,表示以毫秒为单位的UnixTimeStamp。在创建赋值语句时,我有一个名为BeginningOfDay(long date)
的方法它看起来像这样
public static long BeginningOfDay(long date)
{
DateTimeOffset beg = DateTime.SpecifyKind(DateTimeOffset.FromUnixTimeMilliseconds(date).Date, DateTimeKind.Utc);
return beg.ToUnixTimeMilliseconds();
}
如果用户传入02-10-2021 21:01:00,该方法将返回我02-10-2021 00:00:00。
现在日期,用户通过在已经在Utc。但是当调用beg.ToUnixTimeMilliseconds()
时,它再次将其转换为UTC。这导致了很多问题?我希望你们能理解我的问题。当它在本地运行时,它工作得很好。但在服务器上,由于它的位置,它会出错。给定参数1633903199它返回1633816800局部正确。但是在azure上相同的参数给出1633824000
用UtcDateTime
代替.Date
,这样你所有的代码将与UTC日期对齐。
代码将是这样的:
DateTimeOffset.FromUnixTimeMilliseconds(date).UtcDateTime