我正在使用System.Windows.Controls.DatePicker控件。此控件允许用户在日历中选择日期,但也可以直接写日期。
我希望向用户提供有关如何撰写此日期的信息。
所以我基本上想找到一种显示通用日期格式(不是特定日期)的方法
我知道以下内容:
DateTime dt = DateTime.Now;
Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Console.WriteLine(dt.ToString("d")); // Gives 7/9/2001
看起来DatePicker使用“d”格式,所以我正在寻找一种方法来获取以下字符串“dd / mm / yyyy”
在法国(加拿大)地区,例如“yyyy-mm-dd”
非常感谢!
答案 0 :(得分:4)
当您获得CultureInfo对象时,它上面有一个DateTimeFormat属性。它有一个ShortDatePattern属性,显示了用于格式化日期的模式。
来自链接的MSDN文章:
public class SamplesDTFI
{
public static void Main()
{
string[] cultures = { "en-US", "ja-JP", "fr-FR" };
DateTime date1 = new DateTime(2011, 5, 1);
Console.WriteLine(" {0,7} {1,19} {2,10}\n", "CULTURE", "PROPERTY VALUE", "DATE");
foreach (var culture in cultures) {
DateTimeFormatInfo dtfi = CultureInfo.CreateSpecificCulture(culture).DateTimeFormat;
Console.WriteLine(" {0,7} {1,19} {2,10}", culture,
dtfi.ShortDatePattern,
date1.ToString("d", dtfi));
}
}
}
// The example displays the following output:
// CULTURE PROPERTY VALUE DATE
//
// en-US M/d/yyyy 5/1/2011
// ja-JP yyyy/MM/dd 2011/05/01
// fr-FR dd/MM/yyyy 01/05/2011
答案 1 :(得分:2)
您使用从DateTimeFormatInfo
获得的CultureInfo
对象。 DateTimeFormatInfo
上有一些以“Pattern”结尾的属性。这是我生成的列表:
Current culture: en-US
Property Format Result
-------------------- ----------------------------- -------------
FullDateTimePattern : dddd, MMMM dd, yyyy h:mm:ss tt - Thursday, February 04, 2016 3:51:17 PM
LongDatePattern : dddd, MMMM dd, yyyy - Thursday, February 04, 2016
LongTimePattern : h:mm:ss tt - 3:51:17 PM
MonthDayPattern : MMMM dd - February 04
RFC1123Pattern : ddd, dd MMM yyyy HH':'mm':'ss 'GMT' - Thu, 04 Feb 2016 15:51:17 GMT
ShortDatePattern : M/d/yyyy - 2/4/2016
ShortTimePattern : h:mm tt - 3:51 PM
SortableDateTimePattern : yyyy'-'MM'-'dd'T'HH':'mm':'ss - 2016-02-04T15:51:17
UniversalSortableDateTimePattern : yyyy'-'MM'-'dd HH':'mm':'ss'Z' - 2016-02-04 15:51:17Z
YearMonthPattern : MMMM, yyyy - February, 2016
如您所见,您所需的结果"dd/mm/yyyy"
不存在。为了得到它,你将不得不对其进行硬编码。
对于好奇(下面的代码不是要回答这个问题),这是我用来生成上表的代码:
var culture = CultureInfo.CurrentCulture;
var fmt = culture.DateTimeFormat;
Debug.WriteLine("Current culture: " + culture.Name);
foreach (var prop in fmt.GetType().GetProperties().Where(p => p.Name.EndsWith("Pattern")))
{
var pattern = prop.GetValue(fmt) as string;
Debug.WriteLine("{0,-35}: {1,-35} - {2}", prop.Name, pattern, DateTime.Now.ToString(pattern));
}
答案 2 :(得分:0)
使用Console.WriteLine(dt.ToString("dd/MM/yyyy"));