1. ホーム
  2. javascript

[解決済み] momentjsでdatetimeに分単位を追加する

2022-02-06 10:53:42

質問

変数 secondsToMinutesstartdate .

secondsToMinutes は"3:20"です。 startDate = "2:00 PM" endDate は "2:03:20 PM" と等しいはずです。 いろいろと試してみましたが、毎回エラーが出ます。

   var startdate = data.StartTime;
   startdate = moment(startdate).format('LTS');

   var secondsToMinutes = readableDuration(self.runlength());//='3:20';

   var seconds = secondsToMinutes.split(':')[1];
   var minutes = secondsToMinutes.split(':')[0];

   var date = moment(startdate)
        .add(seconds, 'seconds')
        .add(minutes, 'minutes')
        .format('LTS');

日付が無効な日付として表示される。

解決方法は?

moment().format("LTS") に文字列値を返します。 hh:mm:ss AM/PM の形式を使用します。 標準的な形式でない文字列を使用してモーメントオブジェクトを作成する場合、モーメントコンストラクタの第2パラメータに入力形式を渡す必要があります。

例えば Jan 1, 2017 を文字列にすると 01012017 は標準的な表現ではありません。しかし、そこからモーメントオブジェクトが必要な場合、以下のように使用します。 moment("01012017") は、フォーマット時に "Invalid Date" というレスポンスを返します。代わりに moment("01012017","DDMMYYYY")

var d = moment("01012017")
d.toISOString() => "Invalid date"

var d = moment("01012017", "DDMMYYYY")
d.toISOString() => "2016-12-31T18:30:00.000Z"

あなたのコードでは、「日付」変数を作成するときに、以下のようにモーメントコンストラクタの2番目のパラメータとして "hh:mm:ss A" を渡してください。

   var date = moment(startdate, "hh:mm:ss A")
        .add(seconds, 'seconds')
        .add(minutes, 'minutes')
        .format('LTS');