向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 屬性為,並且其值為等效於當前 DateTime 對象的值的本地時間;如果經轉換的值過大以至於不能由 DateTime 對象表示,則為 MaxValue,或者,如果經轉換的值過小以至於不能表示為 DateTime 對象,則為 MinValue。 備忘

本地時間等於 UTC 時間加上 UTC 位移量。有關 UTC 位移量的更多資訊,請參見 TimeZone.GetUtcOffset。轉換還要考慮應用於當前 DateTime 對象所表示的時間的夏時制規則。

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

Kind

結果

DateTime 的此執行個體被轉換為本地時間。

Local

未執行任何轉換。

假定 DateTime 的此執行個體為 UTC 時間,並且執行轉換時將 Kind 視作 Utc

該轉換返回的值為 Kind 屬性總是返回 LocalDateTime。因此,即使 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.