将字符串转换为带前导零的 DateTime C#

Convert String to DateTime with Leading Zero C#

我有一个格式为 MM/dd/yyyy:

的日期时间
string datetime = "05/16/2018"

现在,根据要求,我需要将这个 string 转换为 DateTime。每当我这样做时,它都会删除前导零。

DateTime dt = DateTime.Parse(datetime, Globalization.CultureInfo.InvariantCulture, Globalization.DateTimeStyles.None)

在这里,输出为 5/16/2018,但我需要它为 05/16/2018。那么,如何实现这个结果呢?

"5/16/2018" 是字符串表示 od DateTime 值。 如果你想输出前导零,你可以使用自定义格式:

dt.ToString("dd/MM/yyyy");

首先,您的字符串 DateTime 格式 (MM/dd/yyyy) 令人困惑!它会为字符串数据时间值(如 "05/08/2018")提供误导性值。所以你必须使用 ParseExact 而不是 Parse 如下:

DateTime dt = DateTime.ParseExact(datetime,"MM/dd/yyyy", CultureInfo.InvariantCulture);

It gives output as 5/16/2018 but I need it as 05/16/2018. So, how do I achieve this result?

您只需将您的机器 DateTime 格式更改为前导零 DataTime 格式即可实现此目的!因为默认情况下 C# DateTime 采用机器 Datatime 格式的格式。

好吧,我还检查了一个测试控制台应用程序,以确认如果您的机器 DateTime 格式包含,您转换的 DateTime 可以包含前导零而不将其转换为字符串前导零。

您需要了解 DateTime 只是一个表示时间点的对象。它不存储有关其格式化方式的信息。以下是相同的DateTime,只是格式不同:

05/16/2018
5/16/2018

因为它们代表同一时间点

这就像 int 的行为方式。它也会 "remove your leading zeros":

int a = 05;
Console.WriteLine(a); // just prints "5".

因为055是一样的int,就int而言

是否在 DateTime 中添加前导零取决于您如何格式化它。它们仅在您将 DateTime 转换为字符串时出现。 05/16/20185/16/2018 是不同的 strings.

如果你想要前导零,只要在你想输出的时候指定一个日期格式,比如dd/MM/yyyy

Console.WriteLine(dateTime.toString("dd/MM/yyyy")); // prints leading zeroes!