架构师_程序员

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 71|回复: 0

[.NET Core] .Net Core 中 DateTime 时间在Linux Docker中与Windows时间不一致

[复制链接]
跳转到指定楼层
楼主
发表于 5 天前
zu
最近写了一个.net core项目,部署到CentOS并在docker上运行的时候,发现DateTime.Now获取的时间与Windows不一致(定时执行的任务,晚了8个小时),在Windows中可以正确的获得本地时间,而在Linxu CentOS 的Docker环境中获取的时间少了8个小时。通过Linxu命令查看本机时间,本地时间正确,但.net core在Docker运行获取时间依然是少8个小时。猜测可能是时区的问题,然后就找到了NodaTime的一个库进行获取统一时区的时间,这下在Linxu CentOS的Docker环境上获取的时间就与Windows中保持了一致。




nuget安装:

  1. Install-Package NodaTime -Version 2.4.7
复制代码


封装扩展方法:

  1. {
  2.         public static DateTime GetCstDateTime()
  3.         {
  4.             Instant now = SystemClock.Instance.GetCurrentInstant();
  5.             var shanghaiZone = DateTimeZoneProviders.Tzdb["Asia/Shanghai"];
  6.             return now.InZone(shanghaiZone).ToDateTimeUnspecified();
  7.         }


  8.     }

  9.     public static class DateTimeExtentions
  10.     {
  11.         public static DateTime ToCstTime(this DateTime time)
  12.         {
  13.             return DateTimeHelper.GetCstDateTime();
  14.         }
  15.     }
复制代码
在程序中获取时间都通过如下方法,即可实现在Windows和Linux保持统一:


  1. DateTime.Now.ToCstTime();
复制代码
另外,附上容器设置时间教程:

Docker 时间不一致,容器时间时区设置
http://www.xcukye.cn/thread-8865-1-1.html
(出处: 架构师_程序员)



(完)






上一篇:ASP.NET Core MVC 内存缓存使用教程
下一篇:Linux小技巧:tee 显示并重定向内容
帖子永久地址: 

架构师_程序员 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与架构师_程序员享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和架构师_程序员的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、架构师_程序员管理员和版主有权不事先通知发贴者而删除本文

码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|Archiver|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2019-11-17 07:11

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表
即时比分新浪