web-dev-qa-db-ja.com

unixのタイムスタンプをカレンダーの日付に変換する方法moment.js

私はunixのタイムスタンプを持っています、そして私はMM/DD/YYYYのようなカレンダー日付にそれを変換しようとしています。これまでのところ、私はこれを持っています:

$(document).ready(function() {
  var value = $("#unixtime").val(); //this retrieves the unix timestamp
  var dateString = moment(value).calendar(); 
  alert(dateString);
});

カレンダーの日付を印刷しようとすると、ウィンドウに「Invalid date」と表示されます。誰かが私を手伝ってくれる?

111
Andrew

あなたが尋ねたようにmoment.jsを使う:

var dateString = moment.unix(value).format("MM/DD/YYYY");
290
Matt Johnson

UNIXのタイムスタンプは1970年からの秒数ですので、JSのDateオブジェクトに変換する必要があります。

var date = new Date(unixTimestamp*1000);
34
Cris

Moment.jsローカライズされたフォーマット を提供しています。

これが一例です。

const moment = require('moment');

const timestamp = 1519482900000;
const formatted = moment(timestamp).format('L');

console.log(formatted); // "02/24/2018"
13
new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()
4
Mohamed.Abdo

それだけ、

moment.unix(date).toDate();
0

この関数はタイムスタンプから日付を作成します:

    function formatDateTime(dateString) {
        const parsed = moment(new Date(dateString))

        if (!parsed.isValid()) {
            return dateString
        }

        return parsed.format('MMM D, YYYY, HH:mmA')
    }
0
Bill Zelenko
$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment(value, 'MM/DD/YYYY', false).calendar(); 
    alert(dateString);
});

厳密モード寛容モード があります。

厳密モードはほとんどの状況でうまく機能しますが、許容モードは、瞬間的に渡される文字列の形式が異なる場合に非常に便利です。

今後のリリースでは、パーサーはデフォルトでstrictモードを使用するようになります。厳密モードでは、区切り記号を含めて、指定された形式と完全に一致するようにその時点での入力が必要です。厳密モードは、モーメント関数の3番目のパラメーターとしてtrueを渡すことによって設定されます。

寛容モードが有用である一般的なシナリオは、第三者のAPIが日付を提供していて、そのAPIの日付フォーマットが変更される可能性がある状況です。 APIが 'YYYY-MM-DD'フォーマットで日付を送信することから始まり、その後 'MM/DD/YYYY'フォーマットに変わると仮定します。

厳密モードでは、次のコードで「無効な日付」が表示されます。

moment('01/12/2016', 'YYYY-MM-DD', true).format()
"Invalid date"

フォーマット文字列を使用した寛容モードでは、間違った日付が表示されます。

moment('01/12/2016', 'YYYY-MM-DD').format()
"2001-12-20T00:00:00-06:00"

別の方法は

$(document).ready(function() {
    var value = $("#unixtime").val(); //this retrieves the unix timestamp
    var dateString = moment.unix(value).calendar(); 
    alert(dateString);
});

0
devon kassian

この例のように修正しました。

$scope.myCalendar = new Date(myUnixDate*1000);
<input date-time ng-model="myCalendar" format="DD/MM/YYYY" />

少し遅くなるかもしれませんが、このような新しい問題については、私はこのコードを使用します。

moment(timestamp, 'X').format('lll');

あなたのニーズに合うようにフォーマットを変更することができます、そしてまたこのようなタイムゾーンを追加することができます:

moment(timestamp, 'X').tz(timezone).format('lll');
0