我试图从DateTime
在MM/dd/yyyy
转换成另一种DateTime
在yyyy-dd-MM
转换日期时间
我能够用得到的形式yyyy-dd-MM
一个string
Date.Parse().ToString("yyyy-MM-dd")
但是当我使用Convert.ToDateTime()
或Date.Parse()
到string
转换回DateTime
,它只是转换的string
回到DateTime
形式MM/dd/yyyy HH:mm:ss
我试图从DateTime
在MM/dd/yyyy
转换成另一种DateTime
在yyyy-dd-MM
转换日期时间
我能够用得到的形式yyyy-dd-MM
一个string
Date.Parse().ToString("yyyy-MM-dd")
但是当我使用Convert.ToDateTime()
或Date.Parse()
到string
转换回DateTime
,它只是转换的string
回到DateTime
形式MM/dd/yyyy HH:mm:ss
说我想日期时间转换成某种格式的日期时间为其它格式在技术上是错误的,因为格式是关于DateTime
字符串表示。
为什么我不能使用DateTime.Parse()
将yyyy-dd-MM
格式的字符串转换为DateTime
?
的DateTime.Parse
通过使用当前区域性的约定解析日期和时间字符串。
要跨机器和可能的文化边界以自定义/固定格式解析日期和时间字符串,可以使用DateTime.ParseExact
。
所以将字符串转换在yyyy-dd-MM
到DateTime
你可以使用:
var d = DateTime.ParseExact("2016-31-12", "yyyy-dd-MM", CultureInfo.InvariantCulture);
而且在MSDN中提到,因为日期和时间的字符串表示必须符合公认的模式,你在调用解析方法解析用户输入时应始终使用异常处理,或考虑使用TryParse
或TryParseExact
。
更多信息:
还有就是DateTime
表示形式之间没有差异。实际上,DateTime
是一些刻度,可以用任何你想要的形式表示。
根据你的答案 - 如果你需要字符串化DateTime
有一定的格式 - 你应该指定您希望无论它需要的格式。
我认为日期时间总是显示日期在您的系统的格式。也就是说,如果您将系统格式设置为yyyy-dd-MM,则会以该格式显示日期。
如果你有显示在UI上日期,因为你做了更好的使用格式化字符串。
但是,如果你想进行任何操作(天气comparession或任何其他),使用日期时间。所有的DateTime将始终采用系统格式。
它不仅仅是系统格式。系统格式可以*影响默认文化,但人们可以很容易地使用不同的文化。 –
日期时间取决于当前的系统格式。 – Sreenath
DateTime实际上是双倍的,它不以任何格式“存储”。如果你想以特定的格式查看它,这就是ToString的用途。 –
目前尚不清楚你的意思。当你将字符串解析回'DateTime'时,你得到的只是一个'DateTime'。这不是“MM/dd/yyyy”,“yyyy-dd-MM”或任何其他格式。 –