Hen*_*dra 9 c# timezone nodatime
我要求存储数据库中记录的所有日期必须记录为UTC.到目前为止,我可以使用Noda库使用以下方法实现此目的:
public static DateTime NowUtc(string timeZoneId)
{
var timeZone = GetTimeZone(timeZoneId);
var instant = SystemClock.Instance.Now;
return instant.InZone(timeZone).ToDateTimeUtc();
}
Run Code Online (Sandbox Code Playgroud)
我将验证传递到数据访问层的每个日期必须是UTC格式.
我如何实现这一目标?
谢谢
注意:我创建了一个自定义类库,它使用Noda作为核心引擎,输出转换回System.DateTime.
Mat*_*int 28
我不完全确定你在问什么,但这里有一些提示:
如果你需要的只是"现在"作为UTC DateTime,只需使用DateTime.UtcNow.
如果您正在使用Noda Time时刻并且需要a DateTime,请使用instant.ToDateTimeUtc().如果您只需要UTC,那么使用时区是没有意义的.
如果要验证a DateTime是否为UTC,请检查类型:
dateTime.Kind == DateTimeKind.Utc
Run Code Online (Sandbox Code Playgroud)您的数据层可能会返回DateTimeKind.Unspecified各种类型DateTime,因此您需要在转换为Noda Time之前首先指定UTC类型Instant:
DateTime dt = (DateTime) dataReader["YourDataField"];
DateTime utc = DateTime.SpecifyKind(dt, DateTimeKind.Utc);
Instant instant = Instant.FromDateTimeUtc(utc);
Run Code Online (Sandbox Code Playgroud)最后,要认识到UTC不是一种格式.这是一个时间尺度.因此,值可以"调整为UTC"或"UTC种类",但不能是"UTC格式".
| 归档时间: |
|
| 查看次数: |
10352 次 |
| 最近记录: |