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#日期时间格式的主要内容,如果未能解决你的问题,请参考以下文章

C#日期时间格式化

mysql日期时间格式使用c#

c#日期时间格式

如何在 C# 中生成时间和日期并为 mysql 格式化?

C# 日期时间格式化

c# Aspose cells怎么设置单元格格式为日期格式