如何将任何类型的日期转换为dd / mm / yyyy

我以任何日期格式从* .csv文件接收文本

例如: dd/mm/yydd/mm/yyyymm/dd/yyyy或者4 may 2010 ……

我如何才能转换为单一类型的格式: dd/mm/yyyy

我正在研究C#,.NET 3.5,WinForms

提前致谢

看看TryParseExact 。

 public static string FormatDate(string input, string goalFormat, string[] formats) { var c = CultureInfo.CurrentCulture; var s = DateTimeStyles.None; var result = default(DateTime); if (DateTime.TryParseExact(input, formats, c, s, out result)) return result.ToString(goalFormat); throw new FormatException("Unhandled input format: " + input); } 

示例用法

 var formats - new[] { "dd/MM/yy", "dd/MM/yyyy" }; var next = csvReader.Get("DateField"); var formattedDate = FormatDate(next, "dd/MM/yyyy", formats); 

如果您以多种格式接收数据但无法识别它们,则会遇到问题。 “09/07/2010”是什么意思? 9月7日或7月9日? 这是你想到的第一件事,它与技术无关。 你有两种相互矛盾的forms – 你打算怎么处理它们? 对文件进行采样并选择最有可能的外观? 分别处理每一行,有利于一种格式而不是另一种格式? 问用户?

一旦你正确地解析了数据,按照约翰的回答,以所需的方式格式化它很容易。 请注意,您必须使用“MM”表示月份,而不是“mm”表示分钟。 您还应该指定要使用的文化(影响日期分隔符),假设您不仅要采用系统默认值。

 DateTime.Parse("your data").ToString("dd/MM/yyyy"); 
 using System; using System.Collections.Generic; using System.Text; using System.Globalization; namespace dateconvert { class Program { static void Main(string[] args) { DateTime x = Convert.ToDateTime("02/28/10"); Console.WriteLine(string.Format(x.ToString("d", DateTimeFormatInfo.InvariantInfo))); DateTime y = Convert.ToDateTime("May 25, 2010"); Console.WriteLine(string.Format(y.ToString("d", DateTimeFormatInfo.InvariantInfo))); DateTime z = Convert.ToDateTime("12 May 2010"); Console.WriteLine(string.Format(z.ToString("d", DateTimeFormatInfo.InvariantInfo))); Console.Read(); } } } 

String.Format(“{0:MM / dd / yyyy}”,DateTime.Now);

String.Format(“{0:dd / MM / yyyy}”,DateTime.Now);

等等

资料来源: http : //www.csharp-examples.net/string-format-datetime/

您只想将DateTime.ParseExactDateTime.ToString方法一起使用。

直接的DateTime.Parse方法当然有它的用途,并且可以很聪明地解析你知道在特定文化/语言环境中的日期,但是因为看起来给你的日期可能是任意格式无法识别,你可能想要专门使用ParseExact

例:

 var myDate = DateTime.ParseExact("07/14/2010", "MM/dd/yyyy", CultureInfo.CurrentCulture); var standardDateString = myDate.ToString("dd/MM/yyyy");