在我们的应用,所有DateTime
对象存储在UTC
和在我们的框架转换成一个适当的表示通过一个辅助方法:
public static string ToString(DateTime? date, string format)
{
if (date.HasValue)
return String.Format("{0:}"+format, date);
else return "";
}
其中格式是从我们的存储的语言检索。
decimal
表示货币的属性也由我们的框架中的帮助器方法转换。为此,我们使用NumberFormatInfo
:
numberFormat = new NumberFormatInfo();
numberFormat.CurrencyDecimalSeparator = ".";
numberFormat.CurrencyGroupSeparator = "";
numberFormat.NumberDecimalSeparator = ".";
numberFormat.NumberGroupSeparator = "";
然后使用创建NumberFormatInfo
:
price.ToString(numberFormat);
这种方法的最大优点是,你可以创建你自己的喜好,尽管作为什么别人的思想逻辑并且这些方法支持自定义用户设置。
缺点是,您需要为您支持的每个国家/地区创建语言和格式。
谢谢你的回答。尽管如此,即使我询问用户有关其显示数字和货币的方式,但日期也存在问题...... 2017年7月20日星期四,美国时间2017年7月20日,星期四,美国时间美国时间上午7:24 ,在欧盟19:24(不是PM,AM)。有关这些的任何想法? – Panos
@Panos同样的解决方案,不同的技术。包括用于在用户的区域设置中显示日期的格式。它通常由3个元素组成: 1.显示星期几,显示星期几,星期几的缩写。 (Excel中的长期日期) 2.是否显示上午/下午时间,数字时间或没有时间。 3.什么格式显示日期(2017/07/13,2017/13/07或2017年7月13日 )将这三个字符串区域设置值合并到正确的.ToString()模板值中,然后简单地把它传递给任何方法将日期转换为字符串。 – Chrotenise