web-dev-qa-db-ja.com

momentjsでdatetimeに分を追加する

変数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');

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

10
CsharpBeginner

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

たとえば、文字列_Jan 1, 2017_の_01012017_は標準表現ではありません。ただし、モーメントオブジェクトが必要な場合は、moment("01012017")を使用すると、フォーマット時に「無効な日付」応答が返されます。代わりに、moment("01012017","DDMMYYYY")を使用してください

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

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

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

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

Momentには本当に優れたドキュメントがあります。私はそれをチェックアウトします: http://momentjs.com/docs/

しかし、あなたの質問をより直接的に解決するには、couldのようにします:

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

var momentInTime = moment(...)
                   .add(seconds,'seconds')
                   .add(minutes,'minutes')
                   .format('LT');

可能な限り、実際のハンドラーを使用する必要があります。継続時間でできることはいくつかありますが、これはもっと簡潔です。

編集:

別の答えで述べたように:

 moment('2:00:00 PM', 'h:mm:ss A')

that形式を処理する場合に必要です。関係なく-瞬間オブジェクトに分/時間を追加/減算することは簡単です。無効な文字列をモーメントオブジェクトに渡すことは、それ自体が別の問題です。 ;)

4
The Dembinski

最後のmoment()呼び出しでは、値「2:00:00 PM」を解析しようとしています。ドキュメントによると、この場合はString + Format呼び出しを使用する必要があります。

ISO 8601文字列以外の解析結果の一貫性を保つには、文字列+形式を使用する必要があります。

行うとき:

var date = moment('2:00:00 PM')
    .add(30, 'seconds')
    .add(2, 'minutes')
    .format('LTS');

dateInvalid date。ただし、フォーマットh:mm:ss A 2番目のパラメーターとして:

var date = moment('2:00:00 PM', 'h:mm:ss A')
    .add(30, 'seconds')
    .add(2, 'minutes')
    .format('LTS');

...結果は2:02:30 PM

2
ischenkodv