InfoQ

新闻

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

作者 Jonathan Allen译者 陈黎夫 发布于 2007年6月22日 上午8时59分

社区
.NET
主题
.NET框架,
国际化

包括各个.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

没有回复

回复

深度内容

Flex与JSON及XML的互操作

平台需要互操作性。在这篇文章中,作者仔细研究了Flex和JSON及XML的互操作性。文章也包含了使用E4X库来将XML映射到图表和表格组件的内容,还演示了如何使用as3core库来解码JSON消息。

用Qi4j进行面向组合编程

本文将简要介绍面向组合编程(COP,Composite Oriented Programming)的概念,展示它如何规避OOP存在的一些问题,并重新点燃使用可重用部件组装领域模型(Domain Model)的希望。

系统开发——新学科,新教育

一门新的计算机学科——“系统开发”,强调人性化、匠艺、设计、创意、创新和新事物的涌现,并建议用被称为“bottega”的工作室替代乏善可陈的教室。

图书聚焦:Visual Studio 2008 揭秘

Mike Snell和Lars Powers用他们最近由Sams出版的新书《Visual Studio 2008揭秘》,试图帮助大家提高开发人员的生产力。本文包括一个下载样章——第10章调试。

BPEL为何不是BPM的圣杯?

Pierre Vigneras在本文中讨论了作为标准之一的BPEL所存在的问题。Pierre先给我们大致介绍了一个简单的并行流程,接着讨论了从业者在试图以一个结构化模型为基础表达非结构化流程时遇到的一系列问题。

基于范型的多语言编程

你是否仔细思考过,为什么人们总在讨论“要正确的语言做恰当的事情”?在这篇文章中,Sadek Drobi向你解释了为什么应该在系统内部混合使用多种语言。

采访与书摘《Pro Web 2.0 Application Development with GWT》

Jeff Dwyer就关于他的新书(《Pro Web 2.0 Application Development with GWT》)、GWT1.5以及创建可搜索的Ajax应用谈了一些他的见解。

时刻准备着,迎接IT业的春天

我们需要设身处地地为客户及客户的业务本身着想,与客户同舟共济。更多创新的思路、产品和模式也同样将为IT业带来新的出路。IT业并不需要坐以待毙,在春天到来之后,市场将会更加繁荣!