如何将日期格式设为dd/mm/yyyy
或mm/dd/yy
?
与VB format("dd/mm/yy",now)
我怎样才能在C#中做到这一点?
答案 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上查找“格式字符串”以查看所有格式选项。
使用yy
,yyyy
,M
,MM
,MMM
,MMMM
,d
,{{1} },dd
,ddd
作为日期组件
使用dddd
,h
,hh
,H
,HH
,m
,mm
,{{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"));