c#日期时间格式
Posted
技术标签:
【中文标题】c#日期时间格式【英文标题】:c# datetime format 【发布时间】:2009-10-08 15:25:28 【问题描述】:我希望我的 DateTime 有一个特定的格式,具体取决于当前的文化。
所以我试试这个:
dateTime.ToString("dd/MM/yyyy hh:mm");
这部分没问题, / 被文化特定的分隔符替换。但是根据文化,日期和月份的顺序不会切换(如 MM/dd)。
使用.ToString("g")
有效,但不包括前导零。
我该如何做到这一点?
【问题讨论】:
这篇文章应该回答你的问题:Formatting Date and Time for a Specific Culture 有什么理由要保留前导零? 您能否详细解释一下确切您想看到什么? 【参考方案1】:我认为这会做你想要的:
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);
【讨论】:
FullDateTimePattern 是 "dddd, MMMM dd, yyyy h:mm:ss tt" 用于 en-US 也和 dateTime.ToShortDateString + " " + dateTime.ToShortTimeString 一样,都比你的代码短很多。【参考方案2】:您可以在Standard Date and Time Format Strings 文档页面中找到您想要的格式,而不是使用“g”。
编辑:看起来你可能想要CultureInfo.DateTimeFormat.ShortDatePattern,但还是要看看选项。
【讨论】:
【参考方案3】:/
字符是一个占位符,将替换为当前区域性的日期分隔字符。如果您希望“硬编码”格式以使用/
,您需要像这样更改格式字符串:
dateTime.ToString("dd'/'MM'/'yyyy hh':'mm");
【讨论】:
【参考方案4】:您确实想使用“g”,但前导零取决于文化。 Invariant 文化和其他一些文化将包括前导零,但其他文化不会。
您想保持前导零有什么特别的原因吗?
【讨论】:
【参考方案5】:试试这个:
var cinf = CultureInfo.CurrentCulture.DateTimeFormat.DateSeparator;
DateTime.Now.ToString("dd/MM/yyyy hh:mm").Replace(cinf,"/");
【讨论】:
【参考方案6】:如果您对标准模式不满意,可以这样编辑它们:
DateTimeFormatInfo format = (DateTimeFormatInfo) CultureInfo.CurrentCulture.DateTimeFormat.Clone();
format.ShortTimePattern = "hh:mm"; // example only
string result = value.ToString("g", format);
【讨论】:
以上是关于c#日期时间格式的主要内容,如果未能解决你的问题,请参考以下文章