javascript [日付の差を计算]第二引数の日付から第一引数の日付を引いた差を数値で返します。差の単位を省略した场合は差を日付単位で返します。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript [日付の差を计算]第二引数の日付から第一引数の日付を引いた差を数値で返します。差の単位を省略した场合は差を日付単位で返します。相关的知识,希望对你有一定的参考价值。

/**
 * 2つの日付の差を計算する
 * @param {Date} date1 日付1
 * @param {Date} date2 日付2
 * @param {String} [interval] 差の単位
 * @return {Number} 2つの日付の差
 */
var dateDiff = function (date1, date2, interval) {
  var diff = date2.getTime() - date1.getTime();
  switch (interval) {
    case 'YYYY':
      var d1 = new Date(date1.getTime());
      var d2 = new Date(date2.getTime());
      d1.setYear(0);
      d2.setYear(0);
      var i;
      if (diff >= 0) {
        i = d2.getTime() < d1.getTime() ? -1 : 0;
      } else {
        i = d2.getTime() <= d1.getTime() ? 0 : 1;
      }
      return d2.getYear() - date1.getYear() + i;
      break;
    case 'MM':
      var d1 = new Date(date1.getTime());
      var d2 = new Date(date2.getTime());
      d1.setYear(0);
      d1.setMonth(0);
      d2.setYear(0);
      d2.setMonth(0);
      var i;
      if (diff >= 0) {
        i = d2.getTime() < d1.getTime() ? -1 : 0;
      } else {
        i = d2.getTime() <= d1.getTime() ? 0 : 1;
      }
      return ((date2.getYear() * 12) + date2.getMonth()) - ((date1.getYear() * 12) + date1.getMonth()) + i;
      break;
    case 'hh':
      return ~~(diff / (60 * 60 * 1000));
      break;
    case 'mm':
      return ~~(diff / (60 * 1000));
      break;
    case 'ss':
      return ~~(diff / 1000);
      break;
    default:
      return ~~(diff / (24 * 60 * 60 * 1000));
  }
};

/**
 * e.g.
 */
// dateDiff(new Date('2014/1/1'), new Date('2012/1/2')); // 1
// dateDiff(new Date('2014/1/1 12:00:00'), new Date('2012/1/2 00:00:00')); // 0 翌日だけど24時間経っていないので0
// dateDiff(new Date('2014/1/1'), new Date('2013/1/1'), 'YYYY'); // -1

以上是关于javascript [日付の差を计算]第二引数の日付から第一引数の日付を引いた差を数値で返します。差の単位を省略した场合は差を日付単位で返します。的主要内容,如果未能解决你的问题,请参考以下文章

javascript [日付のフォーマット处理]日付をフォーマットして返します。フォーマットを省略した场合は2018/03/10(土)21:51:48.578のような形で返します。关数化しておくとフォ

sh ログ中の日付の変换

sql [SQLServer]日付の文字列変换(CONVERT,111,108,120)

html 离子日期时间で日付の入力栏を作るサンプル

csharp log4net的を各クラスで毎回GetLoggerするか,上下文内の记录器をGetLoggerして使いまわすかでコストの差を见てみた。

Visualforceで数値や日付のフォーマットを指定して表示するには?