BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

处理时间/日期值的新最佳实践

| 作者 Jonathan Allen 关注 552 他的粉丝 ,译者 陈黎夫 关注 0 他的粉丝 发布于 2007年6月23日. 估计阅读时间: 2 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

包括各个.NET语言在内的各种程序设计语言中的一个常见问题就是,它们都没有提供足够优雅的时区支持方法。为了能够正确处理时区信息,程序要么需要将时区信息单独保存起来,要么则要把时间转化成统一的标准形式保存。这样繁杂的工作让人厌倦,以至于很多开发者在开发时干脆将时区信息撇在一旁,不予理会。

不过微软公司则试图通过引入两个新的类型来改变这种状况。第一个类型是TimeZoneInfo。与其前辈TimeZone类型相比,TimeZoneInfo在时区方面提供了更好的支持,例如它能够枚举出储存于操作系统中的各个时区信息。

第二个叫做DateTimeOffset的类型则更为重要,在大多数情况下该类型将会作为传统DateTime类型的替代品使用。与DateTime只能保存本地和UTC时间不同的是,DateTimeOffset类型可以表示任何时区中的时间——只要指定该时区相对于UTC的偏移量即可。

按照Anthony Moore的说法,在大多数时间相关的场景中,DateTimeOffset都应该作为默认的表示方法。不过以下情况例外:

  • DateTime可以用于对时间的绝对值不敏感的场合。例如商店的营业时间。
  • DateTime可以用于无关时区的一些互操作场景中。例如OLE自动化、数据库、当前正使用DateTime的.NET API等。
  • DateTime可以用于表示一个不包含时间的“纯”日期。例如某人的生日。
  • TimeSpan可以用于表示时间的跨度——与日期无关。

据Justin Van Patten所说,Base Class Library(BCL)将在未来全面使用DateTimeOffset——虽然并不是所有人都完全赞同这个决定。例如有些人希望引入IDateTime 来代替原本的DateTime签名,而另一些人则希望让DateTime对象中只存储UTC时间。

至于这两个新的时间日期类将如何配合.NET框架(特别是ADO.NET和LINQ)的其它部分,还有待时间的验证。

查看英文原文:New Best Practices for Working with Date/Time Values

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT