猿问

将字符串转换为具有前导零的日期时间 C#

我有一个格式的日期时间MM/dd/yyyy

string datetime = "05/16/2018"

现在,根据要求,我需要将其转换stringDateTime. 每当我这样做时,它都会删除前导零。

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

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


青春有我
浏览 177回答 3
3回答

富国沪深

您需要了解 aDateTime只是表示时间点的对象。它不存储有关其格式化方式的信息。以下是相同的DateTime,只是格式不同:05/16/20185/16/2018因为它们代表同一个时间点。这就像行为方式int一样。它也会“删除你的前导零”:int a = 05;Console.WriteLine(a); // just prints "5".因为05和5是相同的int,就目前int而言。是否在 a 中添加前导零DateTime取决于您如何格式化它。它们仅在您将您的转换DateTime为字符串时出现。05/16/2018并且5/16/2018是不同string的。如果你想要前导零,只需指定一个日期格式,就像dd/MM/yyyy你想输出它一样:Console.WriteLine(dateTime.toString("dd/MM/yyyy")); // prints leading zeroes!

桃花长相依

首先,您的字符串DateTime格式(MM/dd/yyyy)令人困惑!它将为字符串 DataTime 值(如"05/08/2018". 所以你必须使用ParseExact而不是Parse如下:DateTime dt = DateTime.ParseExact(datetime,"MM/dd/yyyy", CultureInfo.InvariantCulture);它给出的输出为 2018 年 5 月 16 日,但我需要它作为 2018 年 5 月 16 日。那么,我该如何实现这个结果呢?您可以简单地实现这一点,我将您的机器DateTime格式更改为前导零DataTime格式!因为默认情况下 C#DateTime采用机器格式的Datatime格式。好吧,我还检查了测试控制台应用程序,以确认如果您的机器格式包含前导零,则转换后的DateTime可以包含前导零,而无需将其转换为字符串。DateTime

呼啦一阵风

"5/16/2018"是字符串表示 od DateTime 值。如果要以前导零输出,可以使用自定义格式:dt.ToString("dd/MM/yyyy");
随时随地看视频慕课网APP
我要回答