当我们的项目国际化后,需要处理时区问题。

在.NET Core之前我们可以通过以下代码将客户端时间转换为服务端时间:

DateTime serverTime = TimeZone.CurrentTimeZone.ToLocalTime(clientTime);

在.NET Core里,TimeZone类已被标记为已过期,那么我们应该如何使用不过期的API进行时区转换呢?

DateTime serverTime = TimeZoneInfo.ConvertTime(clientTime, TimeZoneInfo.Local);

以下是博主自己写的DateTimeExtensions类中的转换为服务端时间的扩展方法:

public static class DateTimeExtensions
{
/// <summary>
/// 将客户端时间转换为服务端本地时间
/// </summary>
/// <param name="clientTime">客户端时间</param>
/// <returns>返回服务端本地时间</returns>
public static DateTime ToServerLocalTime(this DateTime clientTime)
{
//DateTime serverTime1 = TimeZone.CurrentTimeZone.ToLocalTime(clientTime); //在.NET Core标识已过期的类TimeZone的写法
DateTime serverTime2 = TimeZoneInfo.ConvertTime(clientTime, TimeZoneInfo.Local);//等价的建议写法
return serverTime2;
}
}

关于TimeZone与TimeZoneInfo类的区别/比较,请参考:

https://www.cnblogs.com/dongjh/archive/2012/08/30/2664676.html

在不同时区之间转换时间,请参考MSDN案例:

https://msdn.microsoft.com/zh-cn/library/bb397769.aspx

在.NET Core使用TimeZone将客户端时间转服务器本地时间但编译提示已过期的更多相关文章

  1. VFP调整本机日期时间与服务器日期时间一致

    *!*调整本机日期时间与服务器日期时间一致( YYYY-MM-DD HH:MM:SS.FFF )*!*以下cSqlStr及nCon为SQL查询串及连接句柄cSqlStr="Select Sy ...

  2. [C/C++标准库]_[初级]_[转换UTC时间到local本地时间]

    场景 1.如果有面向全球用户的网站, 一般在存储时间数据时存储的是UTC格式的时间, 这样时间是统一的, 并可以根据当地时区来进行准确的转换. 2.存储本地时间的问题就在于如果换了时区, 那么显示的时 ...

  3. 【应用服务 App Service】发布到Azure上的应用显示时间不是本地时间的问题,修改应用服务的默认时区

    问题情形 应用程序发布到App Service后,时间显示不是北京时间,默认情况为UTC时间,比中国时间晚 8 个小时. 详细日志 无 问题原因 Azure 上所有的服务时间都采用了 UTC 时间. ...

  4. c#获取网络时间并同步本地时间

    通过TCP形式来获取NTP时间.主要代码如下: [DllImport("kernel32.dll")] private static extern bool SetLocalTim ...

  5. python 获取utc时间转化为本地时间

    import datetime timenow = (datetime.datetime.utcnow() + datetime.timedelta(hours=8)) timetext = time ...

  6. mysql触发器:插入数据前更新创建时间为服务器的时间

    DROP TRIGGER IF EXISTS `upd_patientquestionnaire`; create trigger upd_patientquestionnaire BEFORE in ...

  7. jenkins的时间与服务器的时间不一致

    解决办法:

  8. 搭建NTP时间服务器~使用NTP同步时间~构建主机间时间自动同步关系

    NTP是一个时间服务器,同时它也是一个时间客户端. 我们可以使用它构建主机与主机之间的时间自动同步环境,保证所有服务器时间一致性. 常用的公共NTP时间服务器有: cn.ntp.org.cn 中国 n ...

  9. php获取时间问题,用默认配置读到本地时间。。。。。

    用date获取到时间有8小时时差 因为php用date获取到的是格林威治时区的时间,而大陆时间和格林威治时间有8个小时时差,所以.... 修改:网上有各种修改方式: 比如:在程序中添加时间的初始化的语 ...

随机推荐

  1. 双向数据绑定原生js

    let data = {} const input = document.getElementsByClassName('input')[0]; Object.defineProperty(data, ...

  2. NoSQL数据库常见分类

    1.列式数据库HBaseBigTable2.K-V数据库RedisCassandraLevelDBMemCacheEhcache3.文档数据库MongoDBCouchDB4.全文搜索引擎Elastic ...

  3. Lombok 介绍

    Lombok使用 介绍 在项目中使用Lombok可以减少很多重复代码的书写.比如说getter/setter/toString等方法的编写. IDEA中的安装 打开IDEA的Setting –> ...

  4. 【Python基础】lpthw - Exercise 38 列表的操作

    1.列表和字符串操作的混合练习 ten_things = "apples oranges crows telephone light sugar" print("Wait ...

  5. js 检查登录态方法封装(闭包、状态缓存)

    前端页面开发时,经常需要异步校验登录态,每次都重新copy之前写的方法,比较繁琐不好维护,固将登录态校验封装成一个js. (function(){ //登录状态 1 登录态有效 2 登录态无效 3 请 ...

  6. wx.createSelectorQuery() 获取节点信息 获取不到解决方法

    场景:一个气泡的宽度由加载来的数据填充所决定,不定宽,     wx.createSelectorQuery().selectAll('.talkbubble').boundingClientRect ...

  7. mysql中的concat,concat_ws(),group_concat()

    mysql中的concat,concat_ws(),group_concat() 说明: 本文中使用的例子均在下面的数据库表tt2下执行:     一.concat()函数 1.功能:将多个字符串连接 ...

  8. gitlab自动备份和定时删除

    GitLab数据手动备份1.GitLab默认备份目录为/var/opt/gitlab/backups,可以修改/etc/gitlab/gitlab.rb里面的默认存放备份文件目录,这里使用默认备份目录 ...

  9. 报错处理——# Creating Server TCP listening socket *:6379: bind: Address already in use

    在启动redis时报错 # Creating Server TCP listening socket *:6379: bind: Address already in use 错误原因 6379地址已 ...

  10. CentOS系统/tmp目录里面的文件默认保留多久

    一.CentOS系统/tmp目录里面的文件默认保留多久 CentOS6默认保留30天,CentOS7默认保留10天 一.CentOS7系统/tmp目录里面的文件默认保留多久 CentOS7默认保留10 ...