我在 C# 中转换日期时间时遇到问题

本文关键字:遇到 问题 时间 日期 转换 我在 | 更新日期: 2023-09-27 18:32:55

我正在尝试根据数据输入格式("dd/MM/YYYY""MM/dd/YYYY")转换用户输入的日期。

并且正在使用System.Globalization.DateTimeFormatInfo进行转换,以便日期转换应独立于我的PC日历:

System.Globalization.DateTimeFormatInfo dateInfodd = new System.Globalization.DateTimeFormatInfo();
dateInfodd.ShortDatePattern = "dd/MM/yyyy";
System.Globalization.DateTimeFormatInfo dateInfomm = new System.Globalization.DateTimeFormatInfo();
dateInfomm.ShortDatePattern = "MM/dd/yyyy";

我的电脑日历格式是:MM-dd-YYYY

现在,每当我将日期从dd/MM/YYYY转换为MM/dd/YYYY反之亦然时,它都会转换为MM-dd-YYYY.

示例:24/08/2013 => 08-24-2013 .

我想在转换后使用相同的日期分隔符"/"。

等待您的宝贵建议。

我在 C# 中转换日期时间时遇到问题

/将被实际区域性的日期分隔符替换,该分隔符似乎-。因此,您需要提供CultureInfo.InvariantCulture

string result = dateTime.ToString("MM/dd/YYYY", CultureInfo.InvariantCulture);

请参阅:"/"自定义格式说明符

"/"自定义格式说明符表示日期分隔符,它 用于区分年、月和日。适当的 从 当前或指定的日期时间格式信息.日期分隔符属性 文化

在日期格式字符串中,/字符不是文字,而是为当前区域性配置的日期分隔符。因此,如果您当前的日期分隔符是 - ,则所有/字符都将替换为 -

您可以用单引号将字符括起来,以强制将其解释为文字,例如:

"dd'/'MM'/'YYYY"

我想知道你为什么不使用DateTimeparseExact方法?它会将您的值转换为预期的格式,您仍然可以将其用作DateTime。在此处阅读更多内容。