DateTime.Now.ToUniversalTime()有错误的年份

aro*_*ron 5 c# asp.net globalization date datetime-format

并且想法为什么年份显示为2555

在此输入图像描述

该网站的文化是泰国

Jon*_*eet 7

是 - 任何时间DateTime都转换为未指定明确文化的字符串,它将使用当前文化的日历系统.但是,DateTime组件本身仍然反映了公历.

如果您使用,您将看到2555:

int thaiYear = new ThaiBuddhistCalendar().GetYear(DateTime.Now);
Run Code Online (Sandbox Code Playgroud)

基本上,如果您想以编程方式获取特定于文化的日期信息,则需要使用System.Globalization.Calendar.格式化日期时,请确保为要使用的日历指定正确的文化.

  • @Kaf:不,因为正如我在答案的第二句中所说,"DateTime"本身总是根据格里高利历来报告值."DateTime"值不会"知道"要解释的日历,因此它始终假定为格里高利. (2认同)