我在将DateTime变量转换为字符串时遇到了一些麻烦。
我想使用12小时制来显示时间,包括AM/PM
使用以下代码:
string timeStr = PaymentDate.ToString("hh:mm tt");
我会得到"11:39"
,但PM/AM
没有显示。有什么猜测吗?
答案 0 :(得分:4)
即使您当前的文化不使用它,您也可以使用CultureInfo.InvariantCulture
强制AM / PM指示符:
PaymentDate.ToString("hh:mm tt", CultureInfo.InvariantCulture);
你可以查看当前文化的指定者是什么(我的“de-DE”中也是""
):
DateTimeFormatInfo.CurrentInfo.AMDesignator // and .PMDesignator
答案 1 :(得分:3)
DateTime.ToString(string)
method默认使用您的CurrentCulture
。
我认为您的DateTimeFormat
' s AMDesignator
是空字符串。这就是为什么您无法使用CurrentCulture
打印它。
作为替代方案,您可以使用InvariantCulture
("AM"
作为AMDesignator
)作为DateTime.ToString
overload中的第二个参数。
string timeStr = PaymentDate.ToString("hh:mm tt", CultureInfo.InvariantCulture);
Inspector Gadget模式启用:您的个人资料页面显示您来自Ireland
,我认为您的CurrentCulture
是en-IE
。它的AMDesignator
属性值为空字符串。
CultureInfo.GetCultureInfo("en-IE").DateTimeFormat.AMDesignator;
// Prints empty string