2016-10-29 19 views
-1

日付オブジェクトをUTCに変換してからyyyymmdd形式に変換しようとしています。ここ は私のコードUTC時刻をyyyymmdd形式に変換します。Javascript

var scheduleDate = '2016/10/29 17:00'; 
 
var d = new Date(scheduleDate); 
 
var utcdate = d.toUTCString(); 
 

 
var mm = utcdate.getUTCMonth() + 1; 
 
var dd = utcdate.getUTCDate(); 
 

 
alert([date.getUTCFullYear(), !mm[1] && '0', mm, !dd[1] && '0', dd].join(''));

あるしかし、私は以下のエラーを取得しています:

utcdate.getUTCMonth is not a function

にはどうすればUTC文字列の日付形式から月と日付を取得することができます?

+2

を...'行を呼び出して直接' d 'のUTCメソッドを呼び出す – Andreas

+1

getUTCMonth()は、Dateプロトタイプのメソッドで、コードが文字列オブジェクト(utcdate)でそれを使用しようとしています。あなたはそれをあなたのd変数に使うことができます(そして他の日付プロタイプ関数)。 –

答えて

1

変数utcdateは文字列なので、getUTCMonthまたはgetUTCDateのメソッドはありません。

さらに、定義されていない変数のgetUTCFullYearメソッドを呼び出すと、dateとなります。

mmddが文字列ではありません最後に、あなたがゼロでパッドに試す方法は、動作しません、としたとき[1]とインデックス、それらをので、JavaScriptはNumberオブジェクトにこれらの番号を強制変換しますが、彼らが持っていません1という2桁の数字がある場合でも、だから、あなたは常にパッドの上に0を置くでしょう。

あなたは&&オペレータは、このようなとして出力される、いくつかのケースでfalseが得られるように第1の文字列にこれらの数字を強制することで、それはまだ、動作しないことを修正したい場合:false

簡単に言えば、日付のUTC yyyymmdd形式を取得する簡単な方法があります。

var d = new Date('2016/10/29 17:00'); 
 

 
console.log(d.toISOString().replace(/-|T.*/g,''));

UTCの日付が日付に比べて一日オフ時間のいくつかの瞬間にあることに注意してください:たとえばtoISOStringリターンがあることyyyy-mm-ddThh:nn:ss.....フォーマットの左側からそれを抽出することにより、ローカルタイムゾーン。区切り文字(-)を削除するには

date.toLocaleDateString('se') 

:あなたはそれを防ぐために必要がある場合は、その後、私はそのようなスウェーデン、リトアニア、ハンガリー、韓国、...として、big-endian date format standardを持っているロケールにtoLocaleDateStringを使用することをお勧めし非数字を交換するだけです:

var d = new Date('2016/10/29 17:00'); 
 

 
console.log(d.toLocaleDateString('se').replace(/\D/g, ''));

1

知られている日付はUTCタイムゾーンにある場合は、0を使用して日付オブジェクトを作成することができます方法、あなたはそのようなクライアント(ブラウザ)の時間帯に、ローカルの日付表示することができます= `VARのutcdateを削除

//var scheduleDate = '2016/10/29 17:00'; 
 
// If known date is in UTC, create the date object like so: 
 
var d = new Date(Date.UTC(2016,(10 - 1),29,17,0)); 
 

 
// UTC version of the date 
 
var mmUTC = d.getUTCMonth() + 1; 
 
var ddUTC = d.getUTCDate(); 
 
var hhUTC = d.getUTCHours(); 
 
// local to the browser (client) time zone 
 
var mm = d.getMonth() + 1; 
 
var dd = d.getDate(); 
 
var hh = d.getHours(); 
 

 
// display values 
 
console.log('UTC values: hour:['+ hhUTC +'] month:['+ mmUTC +'] day:['+ ddUTC +']'); 
 
console.log('Client Time: hour:['+ hh +'] month:['+ mm +'] day:['+ dd +']'); 
 
console.log('Client yyyymmdd:['+ d.getFullYear() + ((mm < 10) ? '0'+ mm : mm) + dd +']');

関連する問題