仅使用日期时间获取当前日期时的日期格式不同

Posted

技术标签:

【中文标题】仅使用日期时间获取当前日期时的日期格式不同【英文标题】: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 有一个格式。 【参考方案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"

【讨论】:

以上是关于仅使用日期时间获取当前日期时的日期格式不同的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 XSLT 2.0 获取当前日期时间的 RFC1123 日期格式

仅允许 SQL Server 插入的当前日期/时间

bat获取当前日期

JAVA中日期转换和日期计算的方法

sql server 获取指定格式的当前日期

java输入的日期与当前的日期做比较?