linux – 如何将D中的纪元时间(unix时间戳)转换为标准(年 – 月 – 日)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux – 如何将D中的纪元时间(unix时间戳)转换为标准(年 – 月 – 日),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1903字,纯文字阅读大概需要3分钟。
内容图文
![linux – 如何将D中的纪元时间(unix时间戳)转换为标准(年 – 月 – 日)](/upload/InfoBanner/zyjiaocheng/966/da5087286318422197a30a71bcd84782.jpg)
如何将纪元时间(unix时间戳)转换为D中的标准时间?有没有办法自定义格式?
解决方法:
你真的应该把问题分开,而不是同时问两个完全不同的问题.
如何将纪元时间(unix时间戳)转换为D中的标准时间?
如果你需要从unix时间转换为SysTime的“std time”,那么你使用unixTimeToStdTime:
assert(unixTimeToStdTime(0) == (Date(1970, 1, 1) - Date.init).total!"hnsecs");
因此,如果您执行SysTime(unixTimeToStdTime(0)),您将在1970年1月1日午夜时间(即纪元时间)的当地时区获得SysTime.与其他SysTime构造函数不同,它不会将给定的时间视为在给定的时区内.相反,它只是将stdTime设置为给定值,并且它是给定值的时区.因此,要构建与其他构造函数相同的SysTime,您可以执行类似的操作
auto epochInLocalTime = SysTime(Date(1970, 1, 1), UTC()).toLocalTime();
如果要以相反的方向转换,stdTimeToUnixTime会将std时间转换为unix时间.但是,SysTime必须在它上面使用UnixTime,这样你通常不需要stdTimeToUnixTime.
time_t epoch = epochInLocalTime.toUnixTime();
但是,需要注意的一点是,std.datetime真正处理unix时间 – time_t始终被认为是UTC.这很重要的原因是,由于一些莫名其妙的原因,Windows将本地时间的DST应用于time_t,以便UTC偏移永远不会改变,这意味着它对于一年中的大部分都是错误的.它适用于使用time_t的所有Microsoft函数,因为它们期望无意义,但如果您尝试将Windows time_t与另一个框或使用std.datetime等实际正确使用time_t的库一起使用,则会出现互操作性问题.
有没有办法自定义格式?
你的意思是你正在寻找一种方法来为表示时间的字符串(如C的strftime)提供用户定义的格式? std.datetime还没有. API仍然需要为它设计.已经进行了一些讨论,但尚未得到解决.所以,它最终会发生,但可能会有一段时间.
在此期间,您必须使用ISOString,toISOExtString和toSimpleString,它们分别使用ISO格式,ISO扩展格式和Boost的简单字符串格式.一般来说,我建议使用toISOExtString,因为它很容易被人类和标准阅读.通常最好在与其他计算机通信时将其置于UTC(例如sysTime.toUTC())(而不是将其打印出来供人类使用),因为时区是其中的一部分,而不像LocalTime那样.附加时区.
如果你还没有读过this article on std.datetime,那么我建议你这样做,因为它应该给你一个很好的概述模块以及如何使用它.
内容总结
以上是互联网集市为您收集整理的linux – 如何将D中的纪元时间(unix时间戳)转换为标准(年 – 月 – 日)全部内容,希望文章能够帮你解决linux – 如何将D中的纪元时间(unix时间戳)转换为标准(年 – 月 – 日)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。