【发布时间】:2019-09-27 10:35:41
【问题描述】:
我有一个程序可以做几件事。 其中两个是从 txt 中读取日期和在同一个 txt 中重写日期。
日期的读取是一个正则表达式,如:
[0-9]{2}/[0-9]{2}/[0-9]{4} [0-9]{2}:[0-9]{2}:[0-5]{1}[0-9]{1})
问题是我的正则表达式只适用于格式 "DD/MM/YYYY hh:mm:ss" 并且无法确保我的正则表达式可以匹配所有系统日期时间格式。
所以,我需要确保我的程序在每个系统中运行,无论系统 datetime.now 是什么。 为此,我在开始时考虑将每个系统 datetime.now 格式化为提到的格式“DD/MM/YYYY hh:mm:ss”。
目前我有以下代码:
Datetime currentDate = DateTime.ParseExact(DateTime.Now.ToString(), "DD/MM/YYYY hh:mm:ss", CultureInfo.InvariantCulture);
但是,在运行某些测试时,使用格式为“D/M/YYYY h:m:s”的系统日期时出现错误:
“字符串未被识别为有效的日期时间。”
问题是,例如,如果我的日期是“9/27/2019 04:26:46”(M/D/YYYY h:m:s),则它不符合我定义的格式。
有什么想法吗? 提前谢谢!
【问题讨论】:
-
日期没有格式。它们是二进制值,就像整数一样。简单地删除该代码并使用
var currentDate=DateTime.Now。格式仅在从值创建字符串或将字符串解析为值时使用 -
你在做什么是毫无意义的......正如 Panagiotis 提到的 - DateTime 没有格式。只需使用
DateTime.Now,然后在显示日期时使用您喜欢的格式。 -
Datetime currentDate = DateTime.ParseExact(DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture), "dd/MM/yyyy HH:mm:ss", CultureInfo.InvariantCulture);如果你坚持ToString/Parse -
也许真正的 问题是如何在表单、报告、网页、文件或用于显示日期的任何内容中显示日期?所有报告工具都允许设置格式或文化,所有 .NET 堆栈(Winforms、WPF、WebForms、MVC 等)都允许在绑定期间设置格式。数据注释属性允许您指定显示格式。在最坏的情况下,您可以使用
String.Format()以您想要的方式显示数据。 -
您需要的是
String currentDate = DateTime.Now.ToString( "dd/MM/yyyy hh:mm:ss", CultureInfo.InvariantCulture);。请记住 dd 和 yyyy 区分大小写