改进接受的答案,GetAllDateTimePatterns
可以采用参数将结果限制为与标准格式字符串相关的模式,例如长日期模式的“D”。
例如,GetAllDateTimePatterns('D')
当前正在为 en-US 返回此:
"dddd, MMMM d, yyyy", "MMMM d, yyyy", "dddd, d MMMM, yyyy", "d MMMM, yyyy"
这对于 zh-HK:
"yyyy'年'M'月'd'日'", "yyyy'年'MM'月'dd'日'", "yyyy年MMMd日", "yyyy年MMMd日, dddd"
假设它们以某种偏好或流行顺序列出,我们可以选择第一个不包含星期几的选项。
这是扩展方法,因此您可以简单地使用myDateTime.ToLongDateStringWithoutDayOfWeek()
and myDateTime.ToLongDateTimeStringWithoutDayOfWeek()
。
public static string ToLongDateStringWithoutDayOfWeek(this DateTime d)
{
return d.ToString(
CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns('D')
.FirstOrDefault(a => !a.Contains("ddd") && !a.Contains("dddd"))
?? "D");
}
public static string ToLongDateTimeStringWithoutDayOfWeek(this DateTime d, bool includeSeconds = false)
{
char format = includeSeconds ? 'F' : 'f';
return d.ToString(
CultureInfo.CurrentCulture.DateTimeFormat.GetAllDateTimePatterns(format)
.FirstOrDefault(a => !a.Contains("ddd") && !a.Contains("dddd"))
?? format.ToString());
}