解析时使 DateTime 的日期前导零可选

Ala*_*ira 3 c# datetime

我正在将字符串转换为 DateTime 并将字符串输入如下:

string dateTimeBeforeDayTen = '2/05/2016';
string dateTimeBeforeAfterTen = '12/05/2016';
Run Code Online (Sandbox Code Playgroud)

现在,如果我正在解析 dateTimeBeforeAfterTen,我知道我可以使用:

DateTime myDateTime;
DateTime.TryParseExact(dateTimeBeforeAfterTen, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out myDateTime);
Run Code Online (Sandbox Code Playgroud)

但是如果我想解析它们中的任何一个,我该怎么办?我知道我可以这样做:

DateTime myDateTime;
if(!DateTime.TryParseExact(dateTimeBeforeAfterTen, "dd/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out myDateTime));
    DateTime.TryParseExact(dateTimeBeforeAfterTen, "d/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out myDateTime);
Run Code Online (Sandbox Code Playgroud)

但有更好的方法吗?我将日期时间格式存储在数据库中,并希望将其保留为单个字符串。

Gil*_*les 5

单个“d”适用于 1 天和 2 天。所以只需使用“d/MM/yyyy”即可。

格式化字符串

“d”

一个月中的某一天,从 1 到 31。

2009-06-01T13:45:30 -> 1

2009-06-15T13:45:30 -> 15

这有效:

string dateTimeBeforeDayTen = "2/05/2016";
string dateTimeBeforeAfterTen = "12/05/2016";

DateTime myDateTime, myDateTime2;

DateTime.TryParseExact(dateTimeBeforeDayTen, "d/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out myDateTime);
DateTime.TryParseExact(dateTimeBeforeAfterTen, "d/MM/yyyy", CultureInfo.InvariantCulture, DateTimeStyles.None, out myDateTime2);
Run Code Online (Sandbox Code Playgroud)