UTCの時間を現地時間に変換しようとしています。私はこのリンクからこの例に従ってきました: http://jsfiddle.net/FLhpq/4/light/ 。正しいローカル出力が得られないようです。たとえば、10:30がここにいる場合、10:30の代わりに15:30になります。これが私のコードです。
var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');
var localTime = moment.utc(date).toDate();
localTime = moment(localTime).format('YYYY-MM-DD HH:mm:ss');
console.log("moment: " + localTime);
私が何をしても、常にUTCの時間になります。私はヒューストンに住んでいるので、タイムゾーンが問題であることがわかります。私はリンク内のコードをたどりましたが、現地時間を取得するように思えるかもしれません。何がおかしいのですか?
UTC時間を現地時間に変換するには、moment.local()
を使用する必要があります。
詳しくは docs をご覧ください。
var date = moment.utc().format('YYYY-MM-DD HH:mm:ss');
console.log(date); // 2015-09-13 03:39:27
var stillUtc = moment.utc(date).toDate();
var local = moment(stillUtc).local().format('YYYY-MM-DD HH:mm:ss');
console.log(local); // 2015-09-13 09:39:27
var date = moment.utc().format();
console.log(date, "- now in UTC");
var local = moment.utc(date).local().format();
console.log(local, "- UTC now to local");
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
これを試して:
let utcTime = "2017-02-02 08:00:13";
var local_date= moment.utc(utcTime ).local().format('YYYY-MM-DD HH:mm:ss');
let utcTime = "2017-02-02 08:00:13.567";
var offset = moment().utcOffset();
var localText = moment.utc(utcTime).utcOffset(offset).format("L LT");
これを試してください JsFiddle
注:それに応じて日付フォーマットを更新してください。
__formatDate: function(myDate){
var ts = moment.utc(myDate);
return ts.local().format('D-MMM-Y');
}
__formatTime: function(myDate){
var ts = moment.utc(myDate);
return ts.local().format('HH:mm');
},