zoukankan      html  css  js  c++  java
  • C#令人迷惑的DateTime:世界标准时间还是本地时间?

    先来看一段代码:

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

  • 相关阅读:
    SpringMVC
    Spring mvc 下Ajax获取JSON对象问题 406错误
    Docker国内镜像源
    获取redis cluster主从关系
    终端登录超时限制暂时解除
    vim全选,全部复制,全部删除
    [转]Redis集群搭建
    Jenkins持续集成01—Jenkins服务搭建和部署
    ELK重难点总结和整体优化配置
    ELK 经典用法—企业自定义日志收集切割和mysql模块
  • 原文地址:https://www.cnblogs.com/sjqq/p/7570876.html
Copyright © 2011-2022 走看看