C# · 12月 23, 2021

c# – 在日期时间格式之间转换

我正面临一个问题,我需要将给定输入格式的日期转换为目标格式.有没有标准的方法在C#中执行此操作?

举个例子说我们有yyyy.MM.dd作为源格式,目标格式是MM / dd / yyy(当前文化).

问题出现了,因为我使用的解析策略优先考虑当前的文化,然后如果失败则尝试从已知格式列表中解析.现在说我们在上面的源文化(2015.12.9)和现在的文化(2015年12月9日)中有两个等效日期.然后,如果我们试图解析这两个日期,第一个案例的月份将是12,而第二个案例的月份将是9,因此我们有一个不一致(它们应该是相同的确切日期).

我相信,如果存在它应该是一样的东西

DateTime.Convert(2015.12.9,’yyyy/MM/dd’,CultureInfo.CurrentCulture).

有任何想法吗?

编辑:

谢谢大家的意见和建议,但大多数人对我的问题的解释并不完全正确.大多数人回答的是以给定格式直接解析,然后转换为CurrentCulture.

DateTime.ParseExact(“2015.12.9″,”yyyy.MM.dd”,CultureInfo.CurrentCulture)

尽管它采用CurrentCulture格式,但仍将按月返回12.我的问题是,是否有任何标准方法将yyyy.MM.d中的日期转换为格式MM / dd / yyy,以便月份现在位于正确的位置,然后在目标文化中解析它.这种功能可能是不存在的.

解决方法 DateTime.ParseExact正是您要找的: DateTime parsedDate = DateTime.ParseExact(“2015.12.9″,”yyyy.MM.d”,CultureInfo.InvariantCulture);

或者如果你对输入字符串没有信心,最后是DateTime.TryParseExact.