我想使用标准日期格式,在电脑的标准区域设置中显示日期,月份和年份。但是我只能找到“D”,它列出了日期和月 - 月 - 年。有什么方法可以从中删除它或以任何其他方式获得我想要的输出吗?
DateTime date1 = new DateTime(2008, 4, 10);
Console.WriteLine(date1.ToString("D",
CultureInfo.CreateSpecificCulture("en-US")));
// Displays Thursday, April 10, 2008
注意:我不想使用自定义格式(d MMMM yyyy),因为我希望维护订单的区域设置。
答案 0 :(得分:5)
你可以在你的情况下使用它:
DateTimeFormatInfo myDTFI = new CultureInfo("en-US", false).DateTimeFormat;
string str = (new DateTime(2008, 4, 10)).ToString(myDTFI.LongDatePattern.Replace("dddd", ""));
答案 1 :(得分:4)
试试这个:
date1.ToString("d", CultureInfo.CreateSpecificCulture("en-US"))
它将返回你想要的东西!!
答案 2 :(得分:4)
如果您使用的是其中一种标准格式,那么显示的内容将取决于文化 - 所以即使您可以找到某些不显示en-US中某一天的内容,也可能仍然在其他文化中展示它。
我猜你可以找到文化的DateTimeFormatInfo
,找到它的LongDatePattern
,然后从该格式字符串中删除任何单个“d”。但这会很糟糕。
答案 3 :(得分:3)
您应该使用“d”而不是“D”来获得所需的输出。
答案 4 :(得分:2)
许多文化都有多种长日期模式,您可以从中选择第一种缺少星期几模式的模式:
static void Main(string[] args)
{
foreach (var cultureInfo in System.Globalization.CultureInfo.GetCultures(System.Globalization.CultureTypes.AllCultures))
{
string longDateWithoutDayOfWeek = null;
foreach (var pattern in cultureInfo.DateTimeFormat.GetAllDateTimePatterns('D'))
{
if (!pattern.Contains("ddd"))
{
longDateWithoutDayOfWeek = pattern;
break;
}
}
bool isFallbackRequired = string.IsNullOrEmpty(longDateWithoutDayOfWeek);
if (isFallbackRequired)
{
longDateWithoutDayOfWeek = cultureInfo.DateTimeFormat.ShortDatePattern;
}
System.Console.WriteLine("{0} - {1} {2}", cultureInfo.Name, longDateWithoutDayOfWeek, (isFallbackRequired) ? " (short)" : string.Empty);
}
}
或者,您可以使用Windows.Globalization.DateTimeFormatting.DateTimeFormatter模板"day month year"
。