Koj*_*oja 4 .net c# datetime .net-core
我有一个 .NET Core 2.0 应用程序,需要将 UTC 转换DateTime为本地服务器时间。该软件可在 Linux (CentOS 7) 和 Windows 上运行。
在 Windows 上,代码按预期工作:DateTime.UtcNow返回 UTC 时间并DateTime.UtcNow.ToLocalTime()返回调整为当前服务器时间的时间。
但是,在 CentOS 上,DateTime.UtcNow.ToLocalTime()返回相同的 UTC 时间而不是本地时间:
$"Utc: {DateTime.UtcNow}, Kind: {DateTime.UtcNow.Kind}";
$"Local: {DateTime.UtcNow.ToLocalTime()}, Kind: {DateTime.UtcNow.ToLocalTime().Kind}";
Run Code Online (Sandbox Code Playgroud)
输出
"Utc: 07/19/2018 10:53:03, Kind: Utc"
"Local: 07/19/2018 10:53:03, Kind: Local"
Run Code Online (Sandbox Code Playgroud)
CentOS 服务器时间应该是 UTC+3:
$ date
Thu Jul 19 13:55:14 EEST 2018
Run Code Online (Sandbox Code Playgroud)
编辑:DateTime.Now还将当前时间返回为 UTC,而不是本地时间。
显然我应该提到我正在使用 Docker。这显然是 Docker 的一个特性——容器不共享主机的时区。我通过在文件中定义时区解决了这个问题docker-compose.yml:
services:
...:
image: ...
environment:
TZ: "Europe/Helsinki"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1364 次 |
| 最近记录: |