[英]DateTime's ToLongString method doesn't return day name
我目前正在使用.NET的DateTime
的ToLongDateString()
方法來解析日期字符串。 對於某些文化,這很好:
US: Wednesday, May 16, 2001
但是對於其他一些文化,則省略了日期名稱(例如荷蘭,匈牙利和冰島文化)。
NL: 16 mei 2001
這些區域性的DayNames數組包含一周中每一天的專有名稱,但是由於某些原因,它們不在長日期字符串中使用。
我嘗試使用DateTimeFormat.DayNames [i] + "D"
格式設置解決方案,但在這里不起作用,因為它會在已經顯示日期名稱的區域性中導致雙天名稱。
US: Wednesday Wednesday, May 16, 2001
NL: woensdag 16 mei 2001
是否有任何方法可以使默認省略的區域性顯示日期名稱?
沒錯。
.NET會執行它應做的事情,如果您查看Windows pc的區域設置,則可以更改區域性並查看“日期(長)”字段中顯示的內容,然后將看到以下內容:
對於荷蘭人:d。 MMMM YYYY
匈牙利語:YYYY。 MMMM d。
對於冰島人:d。 MMMM YYYY
如果您真的想為所有這些文件都擁有它,則必須手動添加它,或者使用
DateTime.Now.ToString("dddd, dd MM YYYY");
看看此頁面,看看在Windows 7 pc上哪里可以找到區域設置: http : //windows.microsoft.com/en-us/windows7/change-the-country-or-region-setting
許多文化都有多種長日期模式,您可以從中選擇第一個包含星期幾模式的模式:
static void Main(string[] args)
{
foreach (var cultureInfo in System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures))
{
string longDateWithDayOfWeek = null;
foreach (var pattern in cultureInfo.DateTimeFormat.GetAllDateTimePatterns('D'))
{
if (pattern.Contains("ddd"))
{
longDateWithDayOfWeek = pattern;
break;
}
}
bool isFallbackRequired = string.IsNullOrEmpty(longDateWithDayOfWeek);
if (isFallbackRequired)
{
longDateWithDayOfWeek = "dddd, " + cultureInfo.DateTimeFormat.LongDatePattern;
}
System.Console.WriteLine("{0} - {1} {2}", cultureInfo.Name, longDateWithDayOfWeek, (isFallbackRequired) ? " (generated)" : string.Empty);
}
}
這樣可以為荷蘭語和冰島語提供支持,而匈牙利語需要您多做一些研究才能正確覆蓋。
如果您考慮的是自己的問題,那么很明顯,您需要檢查並自行添加。
您基本上是說“如果區域性X不包含日期名稱,請添加日期名稱”,其翻譯為:
var date = DateTime.Now;
if(!date.ToLongDateString().Contains(date.ToString("dddd"))
//Add it
DateTime dt = new DateTime(2001, 5, 16);
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("nl-NL");
Debug.WriteLine(dt.ToLongDateString());
// output: woensdag 16 mei 2001
我想,其他文化可能不包含星期名的天格式,但是你提供的一個呢 -至少我的機器上。
需要注意的一件事,如果要自己檢查並添加它,是否確定它應該始終位於字符串的開頭? 在許多文化中都是這樣,但也許並非所有人都這樣工作。 另外,分隔符呢? 此處僅使用空格,但是許多使用逗號和空格。 其他人可能會使用不同的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.