【问题标题】:DateTime Precision / Accuracy日期时间精度/准确度
【发布时间】: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


【解决方案1】:

DateTime 有一些 MonthYear 的整数标识符。使用它们并将其格式化为String

如果您需要的不仅仅是一天的准确度,DateTime 还有其他标识符:Seconds、Minutes、Hours、Milliseconds……请自行检查属性!

在获得它们的整数值后,您甚至可以开始计算以获取完成某事所用的时间(通过在开始时获取 DateTime 并将其设置为 Now 并获取另一个 DateTime并在结束时将其设置为Now,然后使用name of second object.Subtract( name of the first object ).Add())!

【讨论】:

  • 不确定这如何回答我的问题。如果您将“2015 年 1 月 1 日”存储在 DateTime 中,您的建议如何告诉我是只想存储年份 - 还是完整日期?
  • 您不能使用DateTime,但您可以只获取年份作为对象或完整日期。
  • 推理是,DateTime 对象代表一个日期和时间。您无法设置其准确性,但您可以从中获取特定值并将它们添加到字符串中。
  • 谢谢。同意。但是,我正在寻找 DateTime 未提供的精度设置,因此我的问题。
  • 我刚刚重新阅读了这个问题。我认为 Microsoft 应该进行准确度设置,但在此之前,您必须自定义 DateTime。
猜你喜欢
  • 1970-01-01
  • 2020-03-24
  • 1970-01-01
  • 2023-03-07
  • 2017-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多