先来看一段代码:

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());

C#令人迷惑的DateTime:世界标准时间还是本地时间?的更多相关文章

  1. iOS下日期的处理(世界标准时转本地时间)

    NSDate存储的是世界标准时(UTC),输出时需要根据时区转换为本地时间 Dates         NSDate类提供了创建date,比较date以及计算两个date之间间隔的功能.Date对象是 ...

  2. DOTNET CORE DATETIME在LINUX与WINDOWS时间不一致

    .net core项目,部署到CentOS上的时候,发现DateTime.Now获取的时间与Windows不一致,主要是时区不一致. static void Main(string[] args) { ...

  3. Python中datetime的使用和常用时间处理

    datetime在python中比较常用,主要用来处理时间日期,使用前先倒入datetime模块.下面总结下本人想到的几个常用功能. 1.当前时间: >>> print dateti ...

  4. 关于datetime,date,timestamp,year,time时间类型小结

    关于datetime,date,timestamp,year,time时间类型 datetime占用8个字节 日期范围:”1000-01-01 00:00:00” 到”9999-12-31 23:59 ...

  5. 基础概念——令人迷惑的EOF

    EOF概念常常使人迷惑. 首先我们要理解并没有像EOF字符这样的东西. 进一步讲EOF是由内核检测到的一种条件. 应用程序在它接收到由read函数返回的零返回码时,它就会发现EOF条件. 对于磁盘文件 ...

  6. 那些令人迷惑的名词:切图/H5/XML/REST

    长时间以来对一些名词感到很困惑,不明白其具体指什么,在此记录一下. 一.切图 1.1 原先理解 从字面意思理解,切图是指将一张大的图切割成很多张小的图片.最早(视频教程网或者我要自学网)看到的视频也是 ...

  7. Python中令人迷惑的4个引用

    第一个:执行时机的差异 1. array = [1, 8, 15] g = (x for x in array if array.count(x) > 0) array = [2, 8, 22] ...

  8. 令人迷惑的Gamma

    概述 首先我想说,接触到Gamma的概念也很长时间了,一直没有认真的去学习它.知其然而不知其所以然.最近恰巧学到了这一部分,就想彻底地搞懂它. CRT 说起Gamma,肯定离不开CRT(阴极射线管). ...

  9. sql语句中获取datetime的日期部分或时间部分

    sql语句中获取datetime的日期部分 sql语句中 经常操作操作datetime类型数据.今天在写一个存储过程的时候需要将 一个datetime的值的 日期部分提取出来.网上有许多这方面的介绍. ...

随机推荐

  1. php 投票

    1.投票主界面(问题界面) <?php$db = new Mysqli("localhost","root","root"," ...

  2. iOS学习笔记06-手势识别

    一.UIGestureRecognizer简单介绍 我们已经学习了触摸事件处理,但触摸事件处理起来很麻烦,每个触摸事件处理都需要实现3个touches方法,比较繁琐,实际上我们可以使用更加简单的触摸事 ...

  3. HDU——1045Fire Net(最大匹配)

    Fire Net Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total S ...

  4. 算法复习——半平面交(bzoj2618凸多边形)

    讲解: 这里套用wuvin神犇的ppt,附上友情链接:http://blog.leanote.com/wuvin 半平面交: 算法流程: 注意事项: 例题: Description 逆时针给出n个凸多 ...

  5. 洛谷 [P1290] 欧几里得的游戏

    SG函数的应用 看到这题就想到了SG函数 那么可以考虑最终情况:一个数是x,另一个是0,那么先手必败(因为上一个人已经得到0了,其实游戏已经结束了) 剩下的情况:一个数n, 一个数m,假设n>m ...

  6. Ubuntu MySQL的安装使用

    删除 mysql sudo apt-get autoremove --purge mysql-server-5.0 sudo apt-get remove mysql-server sudo apt- ...

  7. Day 7 Linux之系统监控、硬盘分区等

    Linux之系统监控.硬盘分区等 系统监控 系统监视和进程控制工具—top和free 1) 掌握top命令的功能:top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况, ...

  8. Django 中的时间处理

    操作系统为OS X 10.9.2,Django为1.6.5. 1.时区 在setting.py文件中设置了时区 TIME_ZONE = 'Asia/Shanghai' # 设置时区为UTC+8 USE ...

  9. Linux常用C函数-接口处理篇(网络通信函数)

    接口处理篇accept,bind,connect,endprotoent,endservent,getsockopt,htonl,htons,inet_addr,inet_aton,inet_ntoa ...

  10. wc递归统计代码行数

    find /path -name '*.cpp' |xargs wc -l