向Asp.net Ajax 傳入DateTime類型後時間會變為零時區的時間

來源:互聯網
上載者:User

向Asp.net Ajax 傳入DateTime類型後時間會變為零時區的時間,換句話說也就是比中國的時間少了8個小時。

例如:
自訂類型MyOrder
關於在Asp.net Ajax裡面使用自訂類型請參考
使用ASP.NET AJAX非同步呼叫Web Service和頁面中的類方法(6):伺服器端和用戶端資料類型的自動轉換:複雜類型
C#
public class MyOrder()
{
    public MyOrder()
    {
    }
   
    private DateTime _OrderDateTime;

    public DateTime OrderDateTime
    {
        get
            {
                return _OrderDateTime;
            }
        set
            {
                _OrderDateTime=value;
            }
      }
      …………其他略
}

JS

function()
{
    var order=new MyOrder();
    MyOrder.OrderDateTime=new Date();
    …………其他略
}

然後在WebService裡面查看,傳入後OrderDateTime少了8個小時。

如果直接以DateTime參數傳入Sql寫入資料庫就變回了正常的時間。

最後發現是時區的問題。

解決方案是調用DateTime的ToLocalTime()方法。如果本機電腦時區設定正確,那麼返回回來的時區也是正確的。
也查詢過一些資料,也可以直接加上8個小時,不過傳入的時間是帶時區資訊的。用ToLocalTime()好像更好些。另外我試著設定web.config將<globalization culture="zh-CN" enableClientBasedCulture="false"/>但並不起作用。

關於ToLocalTime

將當前 DateTime 對象的值轉換為本地時間。

命名空間:System
程式集:mscorlib(在 mscorlib.dll 中)

文法
C#
public DateTime ToLocalTime ()
 

 

傳回值
一個 DateTime 對象,其 Kind 屬性為 Local,並且其值為等效於當前 DateTime 對象的值的本地時間;如果經轉換的值過大以至於不能由 DateTime 對象表示,則為 MaxValue,或者,如果經轉換的值過小以至於不能表示為 DateTime 對象,則為 MinValue。
備忘
本地時間等於 UTC 時間加上 UTC 位移量。有關 UTC 位移量的更多資訊,請參見 TimeZone.GetUtcOffset。轉換還要考慮應用於當前 DateTime 對象所表示的時間的夏時制規則。

從 .NET Framework 2.0 版開始,ToLocalTime 方法返回的值由當前 DateTime 對象的 Kind 屬性確定。下表說明了可能的值。

Kind
 結果
 
Utc
 DateTime 的此執行個體被轉換為本地時間。
 
Local
 未執行任何轉換。
 
Unspecified
 假定 DateTime 的此執行個體為 UTC 時間,並且執行轉換時將 Kind 視作 Utc。
 

該轉換返回的值為 Kind 屬性總是返回 Local 的 DateTime。因此,即使 ToLocalTime 反覆應用於同一個 DateTime,返回的仍然是有效結果。

此方法在進行計算時總是使用本地時區。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.