c#中的格式日期

时间:2009-02-01 19:57:24

标签: c# .net datetime formatting

如何将日期格式设为dd/mm/yyyymm/dd/yy

与VB format("dd/mm/yy",now)

类似

我怎样才能在C#中做到这一点?

7 个答案:

答案 0 :(得分:44)

几乎相同,只需使用DateTime.ToString()方法,例如:

DateTime.Now.ToString("dd/MM/yy");

或者:

DateTime dt = GetDate(); // GetDate() returns some date
dt.ToString("dd/MM/yy");

此外,您可能需要考虑使用其中一种预定义的日期/时间格式,例如:

DateTime.Now.ToString("g");
// returns "02/01/2009 9:07 PM" for en-US
// or "01.02.2009 21:07" for de-CH 

这些确保格式正确,与当前区域设置无关。

检查以下MSDN页面以获取更多信息


一些其他相关信息:

如果您想在特定的区域设置/文化中显示日期,那么ToString()方法会超载,需要IFormatProvider

DateTime dt = GetDate();
dt.ToString("g", new CultureInfo("en-US")); // returns "5/26/2009 10:39 PM"
dt.ToString("g", new CultureInfo("de-CH")); // returns "26.05.2009 22:39"

或者,您可以在格式化日期之前设置当前线程的CultureInfo

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
dt.ToString("g"); // returns "5/26/2009 10:39 PM"

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-CH");
dt.ToString("g"); // returns "26.05.2009 22:39"

答案 1 :(得分:8)

string.Format("{0:dd/MM/yyyy}", DateTime.Now)

在MSDN上查找“格式字符串”以查看所有格式选项。

使用yyyyyyMMMMMMMMMMd,{{1} },ddddd作为日期组件

使用ddddhhhHHHmmm,{{1} }用于时间组件

答案 2 :(得分:2)

试试这个:

String.Format("{0:MM/dd/yyyy}", DateTime.Now); // 01/31/2009
String.Format("{0:dd/MM/yyyy}", DateTime.Now); // 31/01/2009
String.Format("{dd/MM/yyyy}", DateTime.Now); // 31/01/2009

答案 3 :(得分:2)

你也可以写

DateTime aDate = new DateTime(); 
string s = aDate.ToShortDateString();

表示简短的符号

DateTime aDate = new DateTime(); 
string s = aDate.ToLongDateString();

用于表示“2009年2月1日星期日”的长记。

或者看看MSDN .ToString(“???”)的可能性;

答案 4 :(得分:2)

更好的是,只使用

DateTime.Now.ToString() 

DateTime.Now.ToString(CultureInfo.CurrentCulture) 

使用用户喜欢的格式。

答案 5 :(得分:0)

我遇到了同样的问题。我需要做的是在类的顶部添加一个引用,并更改当前正在执行的线程的CultureInfo。

using System.Threading;

string cultureName = "fr-CA";
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);

DateTime theDate = new DateTime(2015, 11, 06);
theDate.ToString("g");
Console.WriteLine(theDate);

您所要做的就是更改文化名称,例如:     “en-US”=美国     “fr-FR”=讲法语的法国     “fr-CA”=讲法语的加拿大     等...

答案 6 :(得分:0)

我认为这很简单,因为您可以在没有任何混淆的情况下转换为任何格式

 DateTime.ParseExact(txt.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));