2017-07-20 12 views
0

Firefoxで動作しても、PhantomJSで失敗すると、Angular 2アプリをテストすることができます。テストでは、日付が正しく設定されていることを確認しています。 "2017-07-20T14:20"の形式でローカルiso日付文字列をフィードします。日付部分は正しく設定されていますが、時刻はオフです。私はマウンテン・タイムゾーンでテストを実行しています(-6:00 UTC)ので、時刻は08:20になります。シムがあるか設定が不足している可能性があります。ここで PhantomJSローカルISO日付オフ

はいくつかのコードです:私のテストファイルでは、私のcustomDateクラスファイル

public startTime: string; 

public setDate(date: string) { 
    let date:Date = new Date(date); 
    this.startTime = date.getHours() + ':'; 
    if (date.getMinutes() < 10) { 
     this.startTime += date.getMinutes() + '0'; 
    } else { 
     this.startTime += date.getMinues(); 
    } 
} 

it('should pass') { 
    let testDate = new customDate(); 
    testDate.setDate('2017-07-20T14:20'); 
    expect(testDate.startTime).toBe('14:00'); <-- this is failing it's comeing through as ('8:00') 
} 
+0

[時間オフセット](https://en.wikipedia.org/wiki/ISO_8601#Time_offsets_from_UTC)を使用しない限り、入力した時刻はUTCだと思いますが、 – 0mpurdy

答えて

0

ChromeとSafariはパースの旧バージョンと同様の問題を調査この解決策を発見したUTCの現地日時文字列:Javascript: parse a string to Date as LOCAL time zone。 PhantomJSはES5を使用しているため、日付の文字列はローカルではなくUTCとして解析されます。リンク内のソリューションは、何が起こっているのか、それを回避する方法を説明します。