none
關於data物件 RRS feed

  • 問題

  •  

    我有一段程式是呼叫web service  後得到一個object array

    但我發現得到的物件中的 date 的物件時間都錯掉了

    提前了了8個小時,請問是不是有什麼地方我忘了設定了

           Dim allCallback As Object()
           allCallback = ws.getCallBackByAgentID("999", Now)

            For Each callback As CallbackVO In allCallback
                    msgbox ( callback.CALLBACK_DATE)
            Next

    還是難道我要針對每一個array中物件的data去轉換,

    2006年10月11日 上午 03:20

解答

  •  璉璉 寫信:

    你在用 IE 測試你的 Web Service 時,輸入參數後,送出,就會傳回 xml 資料可直接在 IE 上瀏覽,或是另存為檔案。你可以把你參照的路徑貼到 IE 上,就可以直接用 IE 測。

    如果你都是同一台,就不應該發生時間不對的情形,你有誤用 DateTime.ToLocalTime 或是 DateTime.ToUniversalTime 嗎?

    再不然,把你來源的時間原始值貼出來,再把存取、處理時間的原始碼貼出來。

    我都沒有做任何的轉換,從WEB SERVICE 取到後就SHOW 出來了

    但時間就是不對

           Dim allCallback As Object()
           allCallback = ws.getCallBackByAgentID("999", Now)

            For Each callback As CallbackVO In allCallback
                    msgbox ( callback.CALLBACK_DATE)
            Next

    但我後來用DateTime.ToLocalTime 轉一下

    就正常了

    2006年10月11日 上午 11:49

所有回覆

  • 你檢查一下你 Server 時區跟 client 時區是否正確設定。

    Web Service 傳出來的時間應該是這樣:

    <變數名>1999-09-01T00:00:00+08:00</變數名>

    裡面是帶上時區的,例如台灣地區是 +08:00 ,若是你原始程式需要使用 UTC 時區,你可以用 DateTime.ToUniversalTime 。

    2006年10月11日 上午 06:24
    版主
  •  

    因為我server 跟client 程式是在同一台電腦

    所以時區設定應該是一樣

    我在 vb 中是直接add 一個 web reference 然後呼叫

    請問我要去那裏可以看到

    web service 傳出來的xml資料

    像你說的這樣

    <變數名>1999-09-01T00:00:00+08:00</變數名>

    2006年10月11日 上午 07:21
  • 你在用 IE 測試你的 Web Service 時,輸入參數後,送出,就會傳回 xml 資料可直接在 IE 上瀏覽,或是另存為檔案。你可以把你參照的路徑貼到 IE 上,就可以直接用 IE 測。

    如果你都是同一台,就不應該發生時間不對的情形,你有誤用 DateTime.ToLocalTime 或是 DateTime.ToUniversalTime 嗎?

    再不然,把你來源的時間原始值貼出來,再把存取、處理時間的原始碼貼出來。

    2006年10月11日 上午 07:35
    版主
  • ㄜ~ 貼錯了,那個是 DataSet 的 xml 格式。

    Web Service 的 xml 傳回內容應該是這樣:

    <dateTime xmlns="http://tempuri.org/">2006-10-11T07:44:28.34375Z</dateTime>

    Z 代表 UTC 時間,.Net 會自動轉換為 Local Time 。

    2006年10月11日 上午 07:46
    版主
  • 不好意思

    可以請問一下要怎麼用IE 去請求一個WEB SERVICE

    我只會請求得到一個WSDL檔

    URL要怎麼打才可以去請求一個WEB SERVICE

    2006年10月11日 上午 08:04
  • 直接用 http://localhost/application/service.asmx

    這時出來的是內建說明網頁,點一個簡單一點會傳回時間的函數,或是建立一個測試函數,點叫用即可。

    你只要最後不要加上 ?wsdl ,就不會變成 wsdl 檔。

    2006年10月11日 上午 08:37
    版主
  •  璉璉 寫信:

    你在用 IE 測試你的 Web Service 時,輸入參數後,送出,就會傳回 xml 資料可直接在 IE 上瀏覽,或是另存為檔案。你可以把你參照的路徑貼到 IE 上,就可以直接用 IE 測。

    如果你都是同一台,就不應該發生時間不對的情形,你有誤用 DateTime.ToLocalTime 或是 DateTime.ToUniversalTime 嗎?

    再不然,把你來源的時間原始值貼出來,再把存取、處理時間的原始碼貼出來。

    我都沒有做任何的轉換,從WEB SERVICE 取到後就SHOW 出來了

    但時間就是不對

           Dim allCallback As Object()
           allCallback = ws.getCallBackByAgentID("999", Now)

            For Each callback As CallbackVO In allCallback
                    msgbox ( callback.CALLBACK_DATE)
            Next

    但我後來用DateTime.ToLocalTime 轉一下

    就正常了

    2006年10月11日 上午 11:49
  • 我自己有好幾個系統需要用 Utc 時間,我記得不用特別轉換就是正常的, .Net 會自動轉換。

    還是你有些東西用在 AJAX 內?AJAX 是用 script 去跑的,不像 .Net 會自動轉,就要手動轉。

    2006年10月11日 下午 01:26
    版主