【问题标题】:different between date format when get current date only using datetime仅使用日期时间获取当前日期时的日期格式不同
【发布时间】:2017-01-17 02:42:37
【问题描述】:

如果我的计算机日期时间格式为 yy/mm/dd 或 mm/dd/yyyy 或不管格式

Datetime date1 = ... /// assume date1 is date1 < date2 and  date1 < date3 
DateTime date2  = DateTime.Parse(DateTime.Now.ToString("dd-MM-yyyy")) ; 
DateTime  date3  = DateTime.Now.Date;

DateTime.Compare(date1 ,date2);  and DateTime.Compare(date1 ,date3);

结果如何?是 date2date3 在比较 date1 时返回 1 吗? DateTime.Parse(DateTime.Now.ToString("dd-MM-yyyy") 等于 DateTime.Now.Date ?

【问题讨论】:

  • date1 是什么?您的代码显示 ... 并定义了两次 date2
  • @Alex 更新了问题。
  • @theinarasu - 你知道DateTime 类型确实没有 有格式,而且只有当你将它解析或输出为string 时,你才有一种格式? string 有一个格式。

标签: c# asp.net datetime datetime-format


【解决方案1】:

不知道你为什么要DateTime.Parse(DateTime.Now.ToString("dd-MM-yyyy"));..?

要回答您的问题,date2date3 将根据您的计算机(或运行此代码的设备)本地化而有所不同。

因此,如果date1 总是更早,您可以执行TimeSpan diff = date3 - date1;,这将为您提供TimeSpan 对象。然后可以diff.Days获取天数差。

是的,date3 里面只有日期。时间将设置为午夜 12:00。见here

TimeSpan.Days

【讨论】:

  • 这是错误的做法吗?如果有错误请纠正我,我这样做的主要目的是只获取当前日期而没有时间,DateTime.Now.date 这将返回时间 12.00pm
  • 现在将日期时间解析为字符串并返回是非常错误的。 i18n 会杀了你。
  • 感谢您指出...但是 DateTime.now.Date 的返回时间为 12.00 AM .. 当 Datetime.compare 时会导致任何问题,因为 date1 值仅与日期一起传入没有时间
  • @theinarasu 查看this answer
  • 所有 DateTime 对象都有时间。如果没有传递时间,则默认为 12.00AM / 00:00
【解决方案2】:

如果您只想要没有时间的日期,那么您可以尝试 字符串 x = DateTime.Now.ToShortDateString(); 结果将是 x = "09-09-2016"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2010-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    相关资源
    最近更新 更多