我希望根据当前的文化为我的 DateTime 设置一个特定的格式。
所以我试试这个:
dateTime.ToString("dd/MM/yyyy hh:mm");
这部分没问题, / 被文化特定的分隔符替换。但是根据文化,日期和月份的顺序不会切换(如 MM/dd)。
使用.ToString("g")
有效,但这不包括前导零。
我该如何做到这一点?
我认为这会做你想要的:
System.Globalization.DateTimeFormatInfo format =
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
string dateTime = DateTime.Now.ToString(format.FullDateTimePattern);
编辑:
您可以在较短的日期/时间执行以下操作:
System.Globalization.DateTimeFormatInfo format =
System.Globalization.CultureInfo.CurrentCulture.DateTimeFormat;
string dateTime = DateTime.Now.ToString(format.ShortDatePattern + " " +
format.ShortTimePattern);
您可能会在标准日期和时间格式字符串文档页面中找到所需的格式,而不是使用“g”。
编辑:看起来您可能想要CultureInfo.DateTimeFormat.ShortDatePattern,但无论如何都要检查选项。
该/
字符是一个占位符,将被当前区域性的日期分隔字符替换。如果您希望“硬编码”要使用的格式,/
您需要像这样更改格式字符串:
dateTime.ToString("dd'/'MM'/'yyyy hh':'mm");
您确实想使用“g”,但是前导零取决于文化。Invariant 文化和其他一些文化将包括前导零,但其他文化不会。
您想保持领先的零有什么特别的原因吗?
尝试这个:
var cinf = CultureInfo.CurrentCulture.DateTimeFormat.DateSeparator;
DateTime.Now.ToString("dd/MM/yyyy hh:mm").Replace(cinf,"/");
如果您对标准模式不满意,可以像这样编辑它们:
DateTimeFormatInfo format = (DateTimeFormatInfo) CultureInfo.CurrentCulture.DateTimeFormat.Clone();
format.ShortTimePattern = "hh:mm"; // example only
string result = value.ToString("g", format);