日期时间解析为美国格式'错误',返回非美国格式

本文关键字:美国 格式 返回 错误 时间 日期 | 更新日期: 2023-09-27 18:09:25

我有一个问题解析字符串到DateTime到美国格式。虽然我以MM/dd/yyyy格式提供字符串,但它始终以dd/MM/yyyy格式返回我日期时间,我已经尝试了以下所有方法。

string[] formats = { "MM/dd/yyyy hh:mm:ss", "MM/dd/yyyy" };
DateTime dateTime;
var ex = DateTime.TryParseExact("12/29/1989", formats, provider, DateTimeStyles.None, out dateTime);

上面将返回日期时间为29/12/1989;

我也试过了:

var dt = DateTime.Parse("12/29/1989", System.Globalization.CultureInfo.GetCultureInfo("en-US"));

基本上我已经尝试了所有的DateTime Parse选项,并将全部返回非us格式。

我在英国,我的机器的语言环境是en-UK。

日期时间解析为美国格式'错误',返回非美国格式

all return me non - us format

不,它们返回一个DateTime值。DateTime值没有格式。只是个日期和时间。当您想要将其转换回字符串时,它将使用当前区域性的默认格式,除非您另有说明。

区分存储在值(日期和时间)中的数据和该值的字符串表示形式是很重要的。

给出一个类似的例子,您期望这段代码的结果是什么?

int x = Convert.ToInt32("FF", 16);
Console.WriteLine(x);

你希望是255还是FF ?它是255,因为将int转换为字符串的默认格式是十进制。值最初是从十六进制中解析的并不重要-这不是值的一部分。对DateTime应用完全相同的逻辑。