【发布时间】:2015-05-13 03:34:19
【问题描述】:
我想用不同的精度(准确度)来表示日期。理想情况下,我可以使用 DateTime 数据类型来存储日期信息,尽管它没有精确设置。例如,我有日期“2015 年 1 月 1 日”,但根据其精度,它将被理解为:
- 确切日期:2015 年 1 月 1 日
- 仅限月份和年份:2015 年 1 月
- 仅年份:2015
UI 格式和业务逻辑都需要精度,因此我不喜欢使用 DateTimeFormatInfo 或其他格式附带的 .NET 开箱即用格式选项 - 它们有不同的用途。
因此,我自己的解决方案本质上是一个枚举......
public enum DateTimePrecision
{
DayMonthYear = 0,
MonthYear,
Year,
...
}
... 日期(结构或类)...
public class MySuperDupaAwesomeDateTime
{
public DateTime Date { get; set; }
public DateTimePrecision Precision { get; set; }
}
当然,我也可以构建自己的自定义日期时间。
无论如何,这就像重新发明一些感觉如此普遍并且必须已经存在的东西。任何人都可以想到上述方法的改进或了解 .NET Framework 功能吗?我不是在寻找库或任何东西,而是直接来自 .NET 的解决方案。
【问题讨论】:
-
看起来不错。请求库是题外话,但我很确定 .NET 框架中没有任何内容。
-
来自我们自己的 Jon Skeet:nodatime.org
-
@RonBeyer nodatime 是否提供这种可变精度功能?
-
@Blorgbeard 看起来很接近,请参阅 nodatime.org/1.3.x/api/html/T_NodaTime_LocalDate.htm 你可以尝试标记 Jon 以获得更好的意见。
-
标记未参与问题的人(谢天谢地)不会通知他们。
标签: c# .net date datetime precision