たとえば、この日時があります:
01:20:00 06-26-2014
そして、私はこのような時間を減算したい:
00:03:15
その後、結果を次のようにフォーマットします。
3 hours and 15 minutes earlier
。
moment.js
を使用してそれを行うにはどうすればよいですか?
編集:試しました:
var time = moment( "00:03:15" );
var date = moment( "2014-06-07 09:22:06" );
date.subtract (time);
しかし、結果はdate
と同じです
ありがとう
Moment.subtract
は、Moment型の引数をサポートしていません- ドキュメント :
moment().subtract(String, Number);
moment().subtract(Number, String); // 2.0.0
moment().subtract(String, String); // 2.7.0
moment().subtract(Duration); // 1.6.0
moment().subtract(Object);
最も簡単な解決策は、時間の差分をオブジェクトとして指定することです。
// Assumes string is hh:mm:ss
var myString = "03:15:00",
myStringParts = myString.split(':'),
hourDelta: +myStringParts[0],
minuteDelta: +myStringParts[1];
date.subtract({ hours: hourDelta, minutes: minuteDelta});
date.toString()
// -> "Sat Jun 07 2014 06:07:06 GMT+0100"
Moment.js Durations を使用すると、よりクリーンな実装を作成できます。手動で解析する必要はありません。
var time = moment.duration("00:03:15");
var date = moment("2014-06-07 09:22:06");
date.subtract(time);
$('#MomentRocks').text(date.format())
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.js"></script>
<span id="MomentRocks"></span>
ここであなたの質問に何かが欠けているかもしれません...しかし、私が収集できるものから、subtractメソッドを使用してあなたがしたいことになるはずです:
var timeStr = "00:03:15";
timeStr = timeStr.split(':');
var h = timeStr[1],
m = timeStr[2];
var newTime = moment("01:20:00 06-26-2014")
.subtract({'hours': h, 'minutes': m})
.format('hh:mm');
var str = h + " hours and " + m + " minutes earlier: " + newTime;
console.log(str); // 3 hours and 15 minutes earlier: 10:05
$(document).ready(function(){
var timeStr = "00:03:15";
timeStr = timeStr.split(':');
var h = timeStr[1],
m = timeStr[2];
var newTime = moment("01:20:00 06-26-2014")
.subtract({'hours': h, 'minutes': m})
.format('hh:mm');
var str = h + " hours and " + m + " minutes earlier: " + newTime;
$('#new-time').html(str);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.9.0/moment.min.js"></script>
<p id="new-time"></p>
マイケル・リチャードソンのソリューションは素晴らしいです。日付を減算したい場合(検索するとGoogleがここをポイントするため)、次のように言うこともできます:
var date1 = moment( "2014-06-07 00:03:00" );
var date2 = moment( "2014-06-07 09:22:00" );
differenceInMs = date2.diff(date1); // diff yields milliseconds
duration = moment.duration(differenceInMs); // moment.duration accepts ms
differenceInMinutes = duration.asMinutes(); // if you would like to have the output 559
私はmoment.jsを使用します http://momentjs.com/
var start = moment(StartTimeString).toDate().getTime();
var end = moment(EndTimeString).toDate().getTime();
var timespan = end - start;
var duration = moment(timespan);
var output = duration.format("YYYY-MM-DDTHH:mm:ss");
ライブラリは、ある時間から時間を減算するためのモーメント関数subtract
を備えています。それを使用することも非常に簡単です。
moment(Date.now()).subtract(7, 'days'); // This will subtract 7 days from current time
moment(Date.now()).subtract(3, 'd'); // This will subtract 3 days from current time
//You can do this for days, years, months, hours, minutes, seconds
//You can also subtract multiple things simulatneously
//You can chain it like this.
moment(Date.now()).subtract(3, 'd').subtract(5. 'h'); // This will subtract 3 days and 5 hours from current time
//You can also use it as object literal
moment(Date.now()).subtract({days:3, hours:5}); // This will subtract 3 days and 5 hours from current time
お役に立てれば!