請教關於C# Webapi Date至Angular class object當日期處理問題

請教一下,目前webapi是使用.net C#開發,目前在angular裡需要把WebAPI A接收class中的一個的日期值,再傳入WebAPI B的日期參數中。直接NEW DATE()會造成時區解析問題,如下例一,不知道是否有比較好的日期轉換方式呢?

例一:webapi傳到Angualr裡是2018-12-06T16:00:00Z 格式,而若在Angular裡直接new Date()則會變成Fri Dec 07 2018 00:00:00 GMT+0800 (台北標準時間)。

PS:描述有點凌亂,請見諒!

你所舉例的日期轉換,是合理的,你所遇到的問題是什麼呢?

2018-12-06T16:00:00Z , 屬 ISO 格式, Z 等同 UTC+0
Fri Dec 07 2018 00:00:00 GMT+0800, 屬 UTC 格式

前端傳日期格是到後端,本來就要考慮到時區問題

後面想一想好像我說的太複雜,簡單一點來說就是我想把WebAPI接收到的日期值(2018-12-06T16:00:00Z)當作Angular裡另一個Webapi的日期參數。
而原本WebAPI接收到class object裡的date並非真實的date,無法getDate(), toISOString()…等處理。
不知道是否有較簡易函式或轉換方式?謝謝!

如果單純從 webapi 那邊取得的都是文字,如果希望是日期格式,那就要自己轉換,不確定這是部是你所指的事情

有在angluar 定義export class myInfo { myDate: Date; }原以為是可以直接用Date型態來做處理,結果不行。還要重新轉換。目前尋找一下似乎真的沒有函式可以直接處理,而必須自己處理轉換。這部份目前就只能這樣嗎?

是的,TypeScript 標示成 Date,並不表示他會自動轉換,因為並不會。這部分必須要自己處理
而我自己的作法是寫一個 http interceptor 做處理,只要 api 回傳的資料為日期格式的,都會先轉換成日期格式,統一處理

1個讚

了解了,感謝!.net使用習慣,明明定義時是Date,結果回應錯誤,也害我傻了一陣子。Angular目前也只算是很初學階段,所以都只會很簡易的處理方式。http interceptor 我再去了解研究試試,感恩!

這裡有我剛寫的文章, 應可直接用

感恩!目前遇上這個問題也是因為一開始呼叫webapi帶入的日期是畫面上datepicker資料,所以很直覺帶入即可。後面遇到資料來源變成是另一個webapi取得物件資料,才在撞牆。