将任何日期字符串转换为当前区域性日期格式

本文关键字:日期 区域性 格式 转换 任何 字符串 | 更新日期: 2023-09-27 18:13:38

假设我有一个日期字符串输入,即"30.03.2016"(即假设这里可能是任何语言格式),但我当前的文化是美国。我想将输入转换为Windows保存的区域设置区域性。我使用下面的格式转换,但给我无效的日期时间。

var myDateTimeValue = "30.03.2015";
DateTime myDateTime = DateTime.Parse(myDateTimeValue);
var dateingddmmyy = myDateTime.ToString(new CultureInfo("sv-SE"));
Console.Write(dateingddmmyy);

请告诉我如何将任何类型的日期字符串转换为当前区域性格式。

将任何日期字符串转换为当前区域性日期格式

源日期可以是任何形式:

  • dd-mm-yyyy
  • dd/mm/yyyy,
  • ;
  • mm/dd/yyyy
  • yyyy-MM-dd

我建议你退一步,更详细地探讨你想要解决的问题。也许你不需要从任何数据格式转换,也许有办法提供这样的。

下面我已经解决了我的问题:

string[] formats = {"M/d/yyyy", "MM/dd/yyyy",
                                "d/M/yyyy", "dd/MM/yyyy",
                                "yyyy/M/d", "yyyy/MM/dd",
                                "M-d-yyyy", "MM-dd-yyyy",
                                "d-M-yyyy", "dd-MM-yyyy",
                                "yyyy-M-d", "yyyy-MM-dd",
                                "M.d.yyyy", "MM.dd.yyyy",
                                "d.M.yyyy", "dd.MM.yyyy",
                                "yyyy.M.d", "yyyy.MM.dd",
                                "M,d,yyyy", "MM,dd,yyyy",
                                "d,M,yyyy", "dd,MM,yyyy",
                                "yyyy,M,d", "yyyy,MM,dd",
                                "M d yyyy", "MM dd yyyy",
                                "d M yyyy", "dd MM yyyy",
                                "yyyy M d", "yyyy MM dd"
                               };
                DateTime dateValue;
                    foreach (string dateStringFormat in formats)
                    {
                        if (DateTime.TryParseExact(strDateTime, dateStringFormat,CultureInfo.CurrentCulture,DateTimeStyles.None,
                                                   out dateValue))
                        {
                            return dateValue.ToShortDateString();
                        }
                    }