私は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」と表示されます。誰かが私を手伝ってくれる?
あなたが尋ねたようにmoment.jsを使う:
var dateString = moment.unix(value).format("MM/DD/YYYY");
UNIXのタイムスタンプは1970年からの秒数ですので、JSのDateオブジェクトに変換する必要があります。
var date = new Date(unixTimestamp*1000);
Moment.js は ローカライズされたフォーマット を提供しています。
これが一例です。
const moment = require('moment');
const timestamp = 1519482900000;
const formatted = moment(timestamp).format('L');
console.log(formatted); // "02/24/2018"
new moment(timeStamp,'yyyyMMddHHmmssfff').toDate()
それだけ、
moment.unix(date).toDate();
この関数はタイムスタンプから日付を作成します:
function formatDateTime(dateString) {
const parsed = moment(new Date(dateString))
if (!parsed.isValid()) {
return dateString
}
return parsed.format('MMM D, YYYY, HH:mmA')
}
$(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);
});
この例のように修正しました。
$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');