linux net 时间,DOTNET CORE DATETIME在LINUX与WINDOWS时间不一致

.net core项目,部署到CentOS上的时候,发现DateTime.Now获取的时间与Windows不一致,主要是时区不一致。

static void Main(string[] args)

{

Console.WriteLine(DateTime.Now);

}

CentOS的时区配置如下:

[root@localhost ~]# timedatectl status

Local time: 五 -- :: CST

Universal time: 五 -- :: UTC

RTC time: 五 -- ::

Time zone: Asia/Shanghai (CST, +)

NTP enabled: n/a

NTP synchronized: no

RTC in local TZ: yes

DST active: n/a

Warning: The system is configured to read the RTC time in the local time zone.

This mode can not be fully supported. It will create various problems

with time zone changes and daylight saving time adjustments. The RTC

time is never updated, it relies on external facilities to maintain it.

If at all possible, use RTC in UTC by calling

'timedatectl set-local-rtc 0'.

CentOS上的本地时间也是北京时间,为什么dotnet core程序获取到的时间却相对北京时间少了8个小时?

猜测问题可能是dotnet core程序的DateTime在Linux平台获取到错误的时区了。

google发现,dotnet core在Windows和Linux上使用的时区不同,在Windows上使用的是Windows time zone IDs,但是在*nix系统上使用的是IANA时区。

那么解决办法是不管什么系统,统一使用IANA时区,可以通过一个第三方库NodaTime来实现。

添加依赖包:NodaTime

将系统的当前时间换算成CST标准时间的工具方法

public class TimeUtil

{

public static DateTime GetCstDateTime()

{

Instant now = SystemClock.Instance.GetCurrentInstant();

var shanghaiZone = DateTimeZoneProviders.Tzdb["Asia/Shanghai"];

return now.InZone(shanghaiZone).ToDateTimeUnspecified();

}

}

然后写一个DateTime的扩展方法:

public static class DateTimeExtentions

{

public static DateTime ToCstTime(this DateTime time)

{

return TimeUtil.GetCstDateTime();

}

}

所有系统里面获取时间都通过如下方法,即可实现在Windows和Linux系统上都获取到同样的北京时间:

DateTime.Now.ToCstTime()

Windows与Linux/Mac系统时间不一致的解决方法

Windows与Linux/Mac系统时间不一致的解决方法 分类: linux2012-02-12 14:25 1691人阅读 评论(1) 收藏 举报 windowsubuntusystemlinux ...

.net Core 中DateTime在Linux Docker中与Windows时间不一致

最近写了一个.net core项目,部署到CentOS并在docker上运行的时候,发现DateTime.Now获取的时间与Windows不一致(定时执行的任务,晚了8个小时),在Windows中可以 ...

dotnet core 3.0 linux 部署小贴士

dotnet core 3.0 目前还是测试版,在linux下安装 sdk 需要有一些注意事项 1.下载url https://dotnet.microsoft.com/download/thank- ...

linux时间与Windows时间不一致的解决

一.首先要弄清几个概念:1. “系统时间”与“硬件时间” 系统时间: 一般说来就是我们执行 date命令看到的时间,linux系统下所有的时间调用(除了直接访问硬件时间的命令)都是使用的这个时间.   ...

django 获取系统当前时间 和linux 系统当前时间不一致 问题处理。

问题场景: 在django admin models 实体对象添加一个属性最后修改时间,用户在添加.修改是系统自动修改操作时间. UpdateTime自动获取系统时间.并且自动修改. 代码设置如下. ...

Django 获取时间 和Linux 本地 系统时间 不一致

问题描述 Django 中获取的本地时间 ,和系统时间不一致 错误原因 Django在配置文件settings.py 中 默认配置 UTC世界标准时间,而北京时间是东八区,比UTC时间早8个小时. T ...

解决Elementary OS和Windows时间不一致

解决方案一:把Windows从硬件时间修改成修改成UTC时间,管理员身份运行 Reg add HKLM\SYSTEM\CurrentControlSet\Control\TimeZoneInforma ...

ubuntu上部署windows开发的dotnet core程序

目标:完成windows上开发的dotnet core程序部署至linux服务器上(Ubuntu 14.04) windows上开发dotnet core很简单,安装好VS2017,建立相关类型的项目 ...

dotnet core多平台开发体验(mac os x 、windows、linux)

前言 随着net core rc2的发布,园子里面关于net core的入门文章也也多了起来,但是大多数都是在一个平台上面来写几个简单的例子,或者是在解释代码本身,并没有体现说在一个平台上面创建一个项 ...

随机推荐

getField方法

getField方法是ThinkPHP中用来获取字段值的方法,区别于select和find方法,通常仅用于获取个别字段的值.但是事实上并没有那么简单,该方法的用法总结如下: 获取某个字段值这个是get ...

3_STL算法

1.常用遍历算法1.1 for_each for_each(v1.begin(),v1.end(),show); void show(int &n) //回调函数的入口地址 { cout &l ...

SWUST0249 (凸包面积)

type node=record x,y:longint; end; ; var k,q,qq:longint; sum:double; f,g:..maxn] of node; m,i,j,a,b: ...

利用mysql中的SQL_CALC_FOUND_ROWS 来实现group by后的记录数统计

最近正在做一个显示消息的列表页,列表页中需要根据一个字段来分组显示.并且需要一个分页的效果. 大家也知道group by 后的数据是每一组一行记录,统计分组后的总的记录数又不能用count,所以SQL ...

hdu2993坡dp+二进制搜索

MAX Average Problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Othe ...

thinkphp使用自带webserver

进入命令行,进入 tp5/public 目录后,输入如下命令:php -S localhost:8888 router.php 然后进行访问

第三章之S5PV210串口初始化

1,在start.S中执行373行b lowlevel_init跳转到/board/samsung/goni/lowlevel.S中,此代码中初始化一样硬件. 找到241行,此行执行URAT初始化,如 ...

PJSUA2开发文档--第六章 媒体 Media类

6. 媒体(Media) 媒体对象是能够产生媒体或接受媒体的对象. Media的重要子类是AudioMedia,它代表音频媒体.PJSUA2支持多种类型的音频媒体对象: 捕获设备的AudioMedia ...

LeetCode第十三题-将罗马数字转化为数字

问题简介:将输入的String类型的罗马数字转化为int数值 问题详解:罗马数字由七个不同的符号表示:I,V,X,L,C,D和M 符号-数值 I - 1 V - 5 X -10 L - 50 C - ...

gulp + gulp-better-rollup + rollup 构建 ES6 开发环境

gulp + gulp-better-rollup + rollup 构建 ES6 开发环境 关于 Gulp 就不过多啰嗦了.常用的 js 模块打包工具主要有 webpack.rollup 和 bro ...