c#中的DateTime到字符串格式

本文关键字:字符串 格式 DateTime 中的 | 更新日期: 2023-09-27 18:22:14

我在将DateTime变量转换为字符串时遇到一些问题。我想使用包括AM/PM 在内的12小时时钟显示时间

带有以下代码:

string timeStr = PaymentDate.ToString("hh:mm tt");

我会得到"11:39",但PM/AM没有显示。你猜得到了吗?

c#中的DateTime到字符串格式

您可以使用CultureInfo.InvariantCulture强制使用AM/PM指示符,即使您当前的区域性不使用它:

PaymentDate.ToString("hh:mm tt", CultureInfo.InvariantCulture);

您可以通过以下方式查看当前区域性的标志(我的标志也是"de de"中的""):

DateTimeFormatInfo.CurrentInfo.AMDesignator  // and .PMDesignator
默认情况下,

DateTime.ToString(string)方法使用您的CurrentCulture

我认为您的DateTimeFormatAMDesignator是空字符串。这就是为什么你不能用CurrentCulture打印它。

或者,您可以使用InvariantCulture(将"AM"作为AMDesignator)作为DateTime.ToString重载中的第二个参数。

string timeStr = PaymentDate.ToString("hh:mm tt", CultureInfo.InvariantCulture);

Inspector Gadget模式打开:您的个人资料页面显示您来自Ireland,我假设您的CurrentCultureen-IE。并且它的AMDesignator属性值是空字符串。

CultureInfo.GetCultureInfo("en-IE").DateTimeFormat.AMDesignator;
// Prints empty string