asp.net – NodaTime转换(第2部分).如何?
发布时间:2020-05-24 01:26:29 所属栏目:asp.Net 来源:互联网
导读:跟随我的第一篇文章: DateTime conversions using NodaTime on ASP.Net MVC 3 Razor website. How to? 我正在努力寻找一种简单的方式来转换本地和UTC之间的日期/时间(两种方式),使用NodaTime. 目前的图片是: 我在数据库中保存了UTC的日期/时间. 将它显示给
|
跟随我的第一篇文章: DateTime conversions using NodaTime on ASP.Net MVC 3 Razor website. How to? 我正在努力寻找一种简单的方式来转换本地和UTC之间的日期/时间(两种方式),使用NodaTime. 目前的图片是: >我在数据库中保存了UTC的日期/时间. 我到目前为止 扩展从UTC转换为本地(这部分工作正常): public static DateTime UTCtoLocal(this DateTime dateTime)
{
IDateTimeZoneProvider timeZoneProvider = DateTimeZoneProviders.Tzdb;
var utcTimeZone = timeZoneProvider["UTC"];
var dateTimeFromDb = new DateTime(dateTime.Year,dateTime.Month,dateTime.Day,dateTime.Hour,dateTime.Minute,dateTime.Second,dateTime.Millisecond);
var zonedDbDateTime = utcTimeZone.AtLeniently(LocalDateTime.FromDateTime(dateTimeFromDb));
var usersTimezoneId = "Europe/London"; //just an example
var usersTimezone = timeZoneProvider[usersTimezoneId];
var usersZonedDateTime = zonedDbDateTime.WithZone(usersTimezone);
return usersZonedDateTime.ToDateTimeUnspecified();
}
扩展从本地返回到UTC(这部分是问题): public static DateTime LocaltoUTC(this DateTime dateTime)
{
IDateTimeZoneProvider timeZoneProvider = DateTimeZoneProviders.Tzdb;
var usersTimezoneId = "Europe/London";
var usersTimezone = timeZoneProvider[usersTimezoneId];
var dateTimeFromDb = new DateTime(dateTime.Year,dateTime.Millisecond);
var zonedDbDateTime = usersTimezone.AtLeniently(LocalDateTime.FromDateTime(dateTimeFromDb));
var utcTimezoneId = "UTC";
var utcTimezone = timeZoneProvider[utcTimezoneId];
var utcZonedDateTime = zonedDbDateTime.WithZone(utcTimezone);
return utcZonedDateTime.ToDateTimeUtc();
}
我在这里做错了什么? 解决方法你的UTCToLocal看起来像做的更多的工作比它需要,老实说.应该是: // Note: the DateTime here must have a "Kind" of Utc.
public static DateTime UTCtoLocal(this DateTime dateTime)
{
Instant instant = Instant.FromDateTimeUtc(dateTime);
IDateTimeZoneProvider timeZoneProvider = DateTimeZoneProviders.Tzdb;
var usersTimezoneId = "Europe/London"; //just an example
var usersTimezone = timeZoneProvider[usersTimezoneId];
var usersZonedDateTime = instant.InZone(usersTimezone);
return usersZonedDateTime.ToDateTimeUnspecified();
}
类似地,您的LocalToUTC应该是这些行: // The DateTime here should have a "Kind" of Unspecified
public static DateTime LocaltoUTC(this DateTime dateTime)
{
LocalDateTime localDateTime = LocalDateTime.FromDateTime(dateTime);
IDateTimeZoneProvider timeZoneProvider = DateTimeZoneProviders.Tzdb;
var usersTimezoneId = "Europe/London";
var usersTimezone = timeZoneProvider[usersTimezoneId];
var zonedDbDateTime = usersTimezone.AtLeniently(localDateTime);
return zonedDbDateTime.ToDateTimeUtc();
}
你不需要将它转换成不同的时区:ZonedDateTime知道这是什么,ToDateTimeUtc会做正确的事情.请注意,这里没有真正的dateTimeFromDb,因为如果您从未指定的DateTime转换,那可能来自用户… (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- asp.net-mvc-5 – nuget中用于与WEB API集成的Ninject包中有
- asp.net – 将字符串传递到MVC4中的部分视图
- .net – 如何使用viewmodel绑定选择列表?
- ASP.NET core Web中使用appsettings.json配置文件的方法
- asp.net-mvc – 创建一个texarea帮助器,它将视图的内容作为
- asp.net – 手动更新表单认证券:
- asp.net – web.config allowDefinition = MachineToApplic
- 何时在ASP.NET管道中初始化会话状态
- asp.net – RegisterForEventValidation只能在渲染过程中调
- asp.net-mvc – 为什么要使用视图模型?
推荐文章
站长推荐
- 经典Asp中的多行字符串
- Asp.Net MVC路由表和控制器操作
- asp.net – 我可以愚弄HttpRequest.Current.Requ
- asp.net-core – 为什么在我的ASP.NET Core 1.0(
- asp.net-mvc – 在FSharp.Core旁边找不到FSharp.
- asp.net – 使用javascript和服务器端禁用/启用r
- 析构函数何时在ASP.NET中调用C#类?
- asp.net – 如何在回发中保存asp:HiddenField值
- asp.net-mvc – 如何强制Razor使Editorfor输入fl
- ASP.NET MVC在javascript中使用ViewData
热点阅读
