先来看一段代码:

复制内容到剪贴板程序代码
DateTime time = DateTime.Parse("2013-07-05 00:00:00");
Console.WriteLine(time.ToUniversalTime()); //2013/7/4 16:00:00
Console.WriteLine(time.ToLocalTime()); //2013/7/5 8:00:00

这让人搞不清楚DateTime的类型,当调用ToUniversalTime方法时,它似乎是本地时间,但调用ToLocalTime方法时,它又变成了世界标准时间(UTC) 。DateTime有个只读属性Kind,指示时间类型,输出看下:

复制内容到剪贴板程序代码
Console.WriteLine(time.Kind); //DateTimeKind.Unspecified

DateTimeKind.Unspecified表示时间既未指定为本地时间,也未指定为世界标准时间 -_-#,好在,C#有提供方法让指定DateTime类型:

复制内容到剪贴板程序代码
DateTime time = DateTime.SpecifyKind(DateTime.Parse("2013-07-05 00:00:00"), DateTimeKind.Local);
Console.WriteLine(time.ToUniversalTime()); //2013/7/4 16:00:00
Console.WriteLine(time.ToLocalTime()); //2013/7/5 0:00:00

这样声明一个本地时间显然比较麻烦,平时大都使用本地时间,不明白为什么不默认为本地时间,相比之下,Javascript就比较人性化,它的Date对象总是本地时间:

复制内容到剪贴板程序代码
var time = new Date("2013-07-05 00:00:00");
document.writeln(time.toUTCString()); //Thu, 04 Jul 2013 16:00:00 GMT
document.writeln(time.toLocaleString()); //2013年7月5日 上午12:00:00

C# 时间时区转换

服务器在北美,用户在澳洲,c# sql 写入时间用的是 datetime.now ,读取的时候怎么把时间转换为 当地时间?

比如我从服务器取出的时间是这样的:2014-12-04 11:59:51

展现给用户要是这样的:2014-12-04 15:00:00

由于截图先后顺序问题,澳洲那边的时间现在应该是和国内时间 分钟 是一样的。

请问大侠,C# 内,时区转换怎么写(算上夏时令和冬时令)?

最佳答案

你先转换成UTC时间,然后再用utc时间转换成当地时间。

DateTime st = DateTime.UtcNow;  //如果DateTime.Now.Kind==ateTimeKind.Unspecified,那就需要先DateTime time = DateTime.SpecifyKind(DateTime.Now.ToString(), DateTimeKind.Local);转换成本地时间,然后再转成UtcNow
Console.WriteLine(st.ToLocalTime());

转载于:https://www.cnblogs.com/sjqq/p/7570876.html

C#令人迷惑的DateTime:世界标准时间还是本地时间?相关推荐

  1. Java中带有T Z格式(UTC是世界标准时间)的时间转换为date,string,long类型

    转载于https://blog.csdn.net/csdn9874123/article/details/78679381?ops_request_misc=%257B%2522request%255 ...

  2. IOS 世界标准时间UTC /GMT 转为当前系统时区对应的时间

    - (NSDate *)getNowDateFromatAnDate:(NSDate *)anyDate {//设置源日期时区NSTimeZone* sourceTimeZone = [NSTimeZ ...

  3. 世界标准时间yyyy-MM-dd‘T‘HH:mm:ss.SSSXXX详解

    背景 对于带有时区的时间,国内很多程序员实际开发场景中运用的很少,如果你的业务只是在国内,就是以北京时间为准,世界时间称为东八区时间. 如果你的业务是国际业务,就需要考虑时间,因为你要面对不同的国家用 ...

  4. Java迭代器Iterator令人迷惑的方法名 hasNext(),next()解析

    Java迭代器Iterator令人迷惑的方法名 hasNext(),next()解析推荐,文章很清晰,再也不会迷惑啦:https://blog.csdn.net/weixin_44062380/art ...

  5. UTC世界标准时间、GMT格林尼治标准时间、中国标准时间北京时间

    遇到的现象 let newObj = JSON.parse(JSON.stringify(obj)),假设对象obj有属性time: 如果time的值是new Date(), 则newObj得到的拷贝 ...

  6. Python中的time、datetime、calendar模块(时间模块)

    时间模块 时间间隔:是以秒为单位的浮点数 时间戳: 从1970.1.1 00:00:00 开始到指定时间的秒数 1.time模块 UTC : 格林威治天文时间,世界标准时间,在中国UTC+8 DST: ...

  7. 本地时间与Web标准时间校对

    操作系统时间与Web标准时间校正 本文编译的程序代码全部原码下载:https://download.csdn.net/download/lyhoo163/10703510 一.获取标准时间的意义 我们 ...

  8. 世界计算机世界GMT,UTC,CST,本地时间,1970

    参考:https://baike.baidu.com/item/%E4%B8%96%E7%95%8C%E6%97%B6,https://baijiahao.baidu.com/s?id=1732139 ...

  9. Go 学习笔记(48)— Go 标准库之 time (获取时/分/秒的单位值、标准时间和Unix时间转换、字符串时间和Time类型转换、时区转换、时间的加减/休眠)

    1. 概要说明 import "time" time 包提供了时间的显示和测量用的函数.日历的计算采用的是公历. Go 提供以下几种时间类型: 时间点 Time 时间段 Durat ...

最新文章

  1. 原子智库 | 刘伟:人工智能快追上人类思维?答案可能让你失望
  2. springmvc获取request对象
  3. [转载]ASP.NET MVC:通过 FileResult 向 浏览器 发送文件
  4. 某互联网企业技术发展史(四)配置nginx和mysql兼容Yii框架,上传网站并调试成功...
  5. InfluxDB命令使用
  6. 黑科技教你一招如何解除 生活中烦人的验证码问题
  7. 详解Java中的注解
  8. Summarize to the Power of Two(CF-1005C)
  9. 修改 JSON 对象的值
  10. RK3308(5)---编译根文件系统
  11. Oracle数据库索引使用及索引失效总结
  12. Cookie对象常用属性
  13. dev c 编程语言,devc如何自定义头文件并使用
  14. 城市轨道交通信号系统学习笔记(四)信号机
  15. 从极速号码魔方软件中获取手机号码的城市号段归属地数据
  16. 3GPP使用方法与协议下载
  17. 肖博数学高考数学快速解题法及秒杀向量问题总结
  18. 创新专题一:省份层面(创新效率、创新能力、投入产出、高质量发展等)
  19. 圣诞节马上到了。H5+CSS3+JS制作圣诞帽头像源码送给你们。。。
  20. flutter onPressed onTap等手势检测及触摸事件处理

热门文章

  1. 本地数据jqGrid分页
  2. 训练(线段树+树状数组) poj——3264
  3. 砂.随笔.二十五.如果你是氧气
  4. 1 State Hook
  5. 第一篇-Html标签中head标签,body标签中input系列,textarea和select标签
  6. leetcode-551-Student Attendance Record I(判断是否出现连续几个相同字符)
  7. /home文件夹重新划分独立分区
  8. FPL 2017最佳论文:如何对FPGA云发动DoS攻击?
  9. [Oracle][Corruption]究竟哪些检查影响到 V$DATABASE_BLOCK_CORRUPTION
  10. CSS:页脚紧贴底部