簡體   English   中英

在C#中轉換日期

[英]Converting dates in C#

我有一個ASP.NET MVC應用程序,沒有正確轉換日期值。 我住在一個時區。 我的用戶居住在另一個用戶。 這時,假設我有以下字符串:

var date = "7/1/2014 4:00:00 AM +00:00";

我使用以下內容將此字符串轉換為DateTime:

DateTime temp;
if (DateTime.TryParse(date, out temp))
{
    temp = temp.ToShortDateString();
    WriteToLog(temp);
}

當temp被寫入日志文件時,我發現它被寫為6/30/2014 什么可能導致這個? 我期待7/1/2014 它適用於我的機器。 但是,它不適用於我的用戶計算機。

答案是時區。 您正在解析特定時間點(格林尼治標准時間凌晨4點)。 這與前一天中部標准時間下午10點的時間相同。

如果你保持UTC:

var s = temp.ToUniversalTime().ToShortDateString();

您將獲得所請求的輸出。

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());
}

默認情況下,代碼將使用服務器的本地時間,這是我在在線網站中使用DateTime的方式:

  1. 將其轉換為UTC:

     var mydate = DateTime.UtcNow; // Or var mydate2 = (new DateTime(2015, 6, 3)).ToUniversalTime(); 

    這將使您的應用時區獨立。

  2. 將其轉換為所需時區:

    使用TimeZoneInfo類將本地時間轉換為另一個備用時區

     var mydate = DateTime.UtcNow; TimeZoneInfo iranTimeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById("Iran Standard Time"); var tehranDateTime = TimeZoneInfo.ConvertTime(mydate, iranTimeZoneInfo); 

此代碼將始終在具有正確日期時間和時區配置的任何計算機上返回德黑蘭本地時間。

這是您可以使用的有效TimeZone ID的列表:

- 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM