2016-05-20 14 views
0

数字を日付に変換しようとしていました。以下は私が試したコードです無効な日付 - 日付の数字

var newDate = new Date(1012256900000); 
    console.log("Test: ",newDate.toString('MMM-yyyy')); 

これはうまくいきます。 しかし、私は$ rootScopeオブジェクトからそれを得るとき、無効な日付:(

var newDate = new Date($rootScope.lastLoginTime); 
    console.log("Test: ",newDate.toString('MMM-yyyy')); 

これは、無効な日付を印刷しているFYI、 $ rootScope.lastLoginTime =14632.569億を取得しています;。

答えて

0

ゴナここに推測を取るが、私は、ブラウザのコンソールでやったことを見て:

new Date(1463256900000) 
> [date] Sat May 14 2016 21:15:00 GMT+0100 

new Date("1463256900000") 
> [date] Invalid date 

完全に野生の推測、おそらくあなたは数ではなく、文字列を渡していることを確認する必要があり、 new Date()に - コンストラクタはいずれの場合も、非常にの動作が異なります。

これをしようと代わりに考えてみましょう:

var newDate = new Date(); 
newDate.setTime($rootScope.lastLoginTime); 

setTimeは数値引数を取り、あなたはそれ1を渡すと、あなたの番号にあなたの文字列を変換します。

+0

それは完璧です。ありがとう – user2431170

0

はあなた$rootScope.lastLoginTime = '1463256900000';$rootScope.lastLoginTime = 1463256900000;より推測。時間が時間がstringでないとき、numberとき

new Date(time)は、作品を行います。

var t1 = 1463256900000; 
 
var t2 = '1463256900000'; 
 

 
var d1 = new Date(t1); 
 
var d2 = new Date(t2); 
 

 
console.info(d1); 
 
console.info(d2);

+0

まあ、その応答はサーバーから来ています(1463074320000)。これをrootScope変数に代入しています。私はそれをvar temp = $ rootScope.lastLoginTimeのように文字列に変換しようとしました。 temp = temp.toString();今でも無効な日付を取得中 – user2431170

+0

文字列ではなく数値に変換する必要があります –