我有一个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
的形式输出。那么,我如何达到这个结果呢?
答案 0 :(得分:5)
您需要了解DateTime
只是一个代表时间点的对象。它不存储有关其格式的信息。以下是相同的DateTime
,只是格式不同:
05/16/2018
5/16/2018
因为它们表示同一时间点。
就像int
的行为一样。它还将“删除您的前导零”:
int a = 05;
Console.WriteLine(a); // just prints "5".
就05
而言,5
和int
是相同的int
。
在DateTime
中是否添加前导零取决于其格式。它们仅在您将DateTime
转换为字符串时出现。 05/16/2018
和5/16/2018
是不同的string
。
如果要使用前导零,则只需在要输出时指定日期格式,例如dd/MM/yyyy
:
Console.WriteLine(dateTime.toString("dd/MM/yyyy")); // prints leading zeroes!
答案 1 :(得分:1)
首先,您的字符串DateTime
格式(MM/dd/yyyy
)令人困惑!它将为"05/08/2018"
这样的字符串DataTime值提供误导性的值。因此,您必须使用ParseExact
而不是Parse
,如下所示:
DateTime dt = DateTime.ParseExact(datetime,"MM/dd/yyyy", CultureInfo.InvariantCulture);
输出为5/16/2018,但我需要输出为05/16/2018。那么,我如何达到这个结果呢?
只需将您的计算机DateTime
格式更改为前导零DataTime
格式,即可实现此目的!因为默认情况下,C#DateTime
采用计算机Datatime
格式的格式。
好吧,我还检查了一个测试控制台应用程序,以确认如果您的计算机DateTime
格式包含前导零,那么转换后的DateTime
可以包含前导零而不将其转换为字符串。 / strong>
答案 2 :(得分:0)
"5/16/2018"
是日期时间值的字符串表示形式。
如果要输出前导零,则可以使用自定义格式:
dt.ToString("dd/MM/yyyy");