2017-02-17 60 views
0

我有一些代碼處理日期字符串,我想使用日期管道在UI上顯示它。下面是日期Angular 2日期管道處理偏移量時不存在

的採樣值 「2017-02-07T21:23:19.163」

這裏是模板代碼

<div class="input-group" *ngFor="let history of selectedPricingItem.history"> 
    <span class="input-group-addon"> 
     <i class="fa fa-fw fa-calendar-o " aria-hidden="true"> 
     </i> 
     {{history.createdDate| date:short}} 
    </span> 
    <textarea class="form-control" [(ngModel)]="history.generalNotes" rows="2" readonly></textarea> 
</div> 

這裏是把日期在UI

2017年2月7日,下午5點23

由於某些原因,它在字符串中沒有偏移時添加偏移量。我需要首先將它轉換爲日期對象嗎?

我使用「@角/常見」:「^ 2.2.0」在我的package.json

+0

你使用什麼瀏覽器?在FF和Chrome中它有不同的表現嗎? https://angular.io/docs/ts/latest/api/common/index/DatePipe-pipe.html –

回答

0

發生這種情況B/C DatePipe預計供應日期已經一區偏移量,如果沒有被指定,那麼它假定偏移量是「+0」(UTC)。然後它會嘗試將日期轉換爲客戶端的本地偏移量。你必須是UTC-6(中部時間),因此它爲什麼減去6小時。東部或太平洋時間的人會看到與你所看到的不同的時間。

不知道你使用的是什麼後端,但我的是C#/ WebApi,我的解決方案是找到Kind屬性等於「UnSpecified」並將其更改爲「UTC」或「Local」的DateTime對象,如適當的方式,日期得到JSON序列化與時區偏移量並消除混淆。

如果您不喜歡這種行爲,另一種解決方案是用您自己的自定義管道替換DatePipe,並使用類似於moment.js的東西來處理日期解析(DatePipe默認使用Internationalization API)。