如何将DateTime转换为当前系统以外的其他区域的相关字符串?



我有一个问题,将时间转换为不同的格式,例如,当我有一个日期"30.07.2021 08:34:53"我想把它转换成另一个设备上的正确格式,在这个设备上它采用它使用的格式,并相应地将其转换为MM/DD/YYYYY的美国格式,这将给出"07.30.2021 08:34"

我代码:

string date = "30.07.2021 12:20:05";
System.Globalization.CultureInfo cultureinfo = new System.Globalization.CultureInfo("en-us");
DateTime dt = DateTime.Parse(date, cultureinfo);
Console.WriteLine(dt.Day + " " + dt.Month + " " + dt.Year);

我得到这个错误:

[System.FormatException: String was not recognized as a valid DateTime.]
at System.DateTimeParse.Parse(String s, DateTimeFormatInfo dtfi, DateTimeStyles styles)
at System.DateTime.Parse(String s, IFormatProvider provider)
at Program.Main() :line 10

如果您知道输入日期的格式,请使用ParseExact

string date = "30.07.2021 12:20:05";
DateTime dt = DateTime.ParseExact(date, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture, DateTimeStyles.None);

如果您想以本地系统的格式输出,您可以很容易地:

Console.WriteLine(dt);

任何时候你把它变成一个字符串(就像这里隐式地把它传递给WriteLine,最终导致ToString()被调用),它将使用执行ToString()的线程的区域性设置,除非做出了特殊的努力来改变它,它将从程序运行的系统的区域设置中派生出来

在解析与通常形式或美国标准不同的日期时,需要指定正确的文化。

本页上第一个具有MDY显示日期的区域性是意大利。

查看微软支持的文化页面显示意大利的国家代码为it

因此你的代码可以像这样修改:

string date = "30.07.2021 12:20:05";
System.Globalization.CultureInfo cultureinfo = new System.Globalization.CultureInfo("it");
DateTime dt = DateTime.Parse(date, cultureinfo);
Console.WriteLine(dt.Day + " " + dt.Month + " " + dt.Year);

最新更新