C# 用C语言转换日期#
我有一个C# 用C语言转换日期#,c#,asp.net,datetime,C#,Asp.net,Datetime,我有一个ASP.NETMVC应用程序未正确转换日期值。我居住在一个时区。我的用户居住在另一个。此时,假设我有以下字符串: var date = "7/1/2014 4:00:00 AM +00:00"; 我正在使用以下命令将此字符串转换为日期时间: DateTime temp; if (DateTime.TryParse(date, out temp)) { temp = temp.ToShortDateString(); WriteToLog(temp); } 当temp写
ASP.NET
MVC
应用程序未正确转换日期值。我居住在一个时区。我的用户居住在另一个。此时,假设我有以下字符串:
var date = "7/1/2014 4:00:00 AM +00:00";
我正在使用以下命令将此字符串转换为日期时间:
DateTime temp;
if (DateTime.TryParse(date, out temp))
{
temp = temp.ToShortDateString();
WriteToLog(temp);
}
当temp写入日志文件时,我看到它被写入
6/30/2014
。这可能是什么原因造成的?我期待着2014年7月1日
。它在我的机器上工作。但是,它在我的用户机器上不起作用。答案是时区。您正在解析特定的时间点(格林尼治标准时间上午4:00)。这与前一天晚上10:00 CST的时间点相同
如果将其设置为UTC:
var s = temp.ToUniversalTime().ToShortDateString();
您将获得请求的输出。默认情况下,代码将使用服务器的本地时间,以下是我在在线网站中如何使用
DateTime
:
string date = "7/1/2014 4:00:00 AM +00:00";
DateTime temp;
if (DateTime.TryParse(date, CultureInfo.InstalledUICulture,
DateTimeStyles.AdjustToUniversal, out temp))
{
string result = temp.ToShortDateString());
}
var mydate = DateTime.UtcNow;
// Or
var mydate2 = (new DateTime(2015, 6, 3)).ToUniversalTime();
这将使你的应用程序时区独立var mydate = DateTime.UtcNow;
TimeZoneInfo iranTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Iran Standard Time");
var tehranDateTime = TimeZoneInfo.ConvertTime(mydate, iranTimeZoneInfo);
- Dateline Standard Time
- UTC-11
- Hawaiian Standard Time
- Alaskan Standard Time
- Pacific Standard Time (Mexico)
- Pacific Standard Time
- US Mountain Standard Time
- Mountain Standard Time (Mexico)
- Mountain Standard Time
- Central America Standard Time
- Central Standard Time
- Central Standard Time (Mexico)
- Canada Central Standard Time
- SA Pacific Standard Time
- Eastern Standard Time
- US Eastern Standard Time
- Venezuela Standard Time
- Paraguay Standard Time
- Atlantic Standard Time
- Central Brazilian Standard Time
- SA Western Standard Time
- Pacific SA Standard Time
- Newfoundland Standard Time
- E. South America Standard Time
- Argentina Standard Time
- SA Eastern Standard Time
- Greenland Standard Time
- Montevideo Standard Time
- Bahia Standard Time
- UTC-02
- Mid-Atlantic Standard Time
- Azores Standard Time
- Cape Verde Standard Time
- Morocco Standard Time
- UTC
- GMT Standard Time
- Greenwich Standard Time
- W. Europe Standard Time
- Central Europe Standard Time
- Romance Standard Time
- Central European Standard Time
- W. Central Africa Standard Time
- Namibia Standard Time
- Jordan Standard Time
- GTB Standard Time
- Middle East Standard Time
- Egypt Standard Time
- Syria Standard Time
- E. Europe Standard Time
- South Africa Standard Time
- FLE Standard Time
- Turkey Standard Time
- Israel Standard Time
- Kaliningrad Standard Time
- Libya Standard Time
- Arabic Standard Time
- Arab Standard Time
- Belarus Standard Time
- Russian Standard Time
- E. Africa Standard Time
- Iran Standard Time
- Arabian Standard Time
- Azerbaijan Standard Time
- Russia Time Zone 3
- Mauritius Standard Time
- Georgian Standard Time
- Caucasus Standard Time
- Afghanistan Standard Time
- West Asia Standard Time
- Ekaterinburg Standard Time
- Pakistan Standard Time
- India Standard Time
- Sri Lanka Standard Time
- Nepal Standard Time
- Central Asia Standard Time
- Bangladesh Standard Time
- N. Central Asia Standard Time
- Myanmar Standard Time
- SE Asia Standard Time
- North Asia Standard Time
- China Standard Time
- North Asia East Standard Time
- Singapore Standard Time
- W. Australia Standard Time
- Taipei Standard Time
- Ulaanbaatar Standard Time
- Tokyo Standard Time
- Korea Standard Time
- Yakutsk Standard Time
- Cen. Australia Standard Time
- AUS Central Standard Time
- E. Australia Standard Time
- AUS Eastern Standard Time
- West Pacific Standard Time
- Tasmania Standard Time
- Magadan Standard Time
- Vladivostok Standard Time
- Russia Time Zone 10
- Central Pacific Standard Time
- Russia Time Zone 11
- New Zealand Standard Time
- UTC+12
- Fiji Standard Time
- Kamchatka Standard Time
- Tonga Standard Time
- Samoa Standard Time
- Line Islands Standard Time
您正在解析的日期是GMT(
+00:00
),因此您的用户必须位于GMT之前超过4小时的时区中。在该时区中,它仍然是2014年6月30日
。很好地使用日期时间样式。调整通用
。这比ToUniversalTime
方法更简洁。