js вычислить разницу во времени между двумя временами

задняя часть внешний интерфейс JavaScript

Пишите впереди:

Например, как говорится в заголовке, нужно вычислить разницу во времени.Хотя это не слишком сложно, но это требование часто встречается в проекте.Я разберу его здесь, в надежде разобраться как можно полнее. Друзья в беде могут сделать ссылку, если вам нравится, вы можете поставить лайк или обратить внимание, я надеюсь, что это может помочь всем.

Эта статья была впервые опубликована в моем личном блоге:obkoro1.com

Принцип расчета разницы во времени:

Метод getTime()

Определение метода: Метод getTime() возвращает количество миллисекунд с 1 января 1970 года.

Обычно мы вычисляем разницу во времени, получая два данных о времени, а затем используем метод getTime(), чтобы вернуть разницу во времени с фиксированного 1 января 1970 года соответственно.Преобразуя разницу возвращенных миллисекунд в единицы времени, мы получаем две разницы во времени.

Начать:

Сначала у вас будет куча начальных данных о времени, а затем вы передадите новую дату (ваши данные о времени) своим данным.Преобразовать в объект датыформа.

    var t1="2017/08/28 04:56:38"; //数据
    var dateBegin = new Date(t1);//转化为Date对象的形式
    //Mon Aug 28 2017 04:56:38 GMT+0800 (中国标准时间)  这里就是Date对象的数据形式

Формат времени

Здесь вы должны обратить внимание на бэк-эндформат данных временипроблемы, такие как следующие две:

    第一种:"2017/08/28 04:56:38"//这种格式不用再进行处理
    第二种:"2017-08-01 18:56:38"//这种格式就要进行处理

Поскольку новый метод Date() не может обрабатывать данные второго типа, нам нужно здесьПреобразование второго формата данных в первый формат данных.

     var t1="2017-05-12 00:13:53";
     var dateBegin = new Date(d1.replace(/-/g, "/"));//replace方法将-转为/

В любом случае, я не знаю, какова ситуация у всех, потому что данные, которые мы дали мне из бэкенда, относятся ко второму типу, поэтому я упомяну об этом (закрывая лицо).

Данные в другой раз:

Поскольку это разница во времени, должно быть два данных, в противном случае, как сравнивать два данных, как правило, в двух данных будут данные о текущем времени.

      var dateEnd = new Date();//当前时间数据

Полный код для расчета разницы во времени (дни, часы, минуты, секунды):

Сначала получите разницу в миллисекундах между ними и преобразуйте нужную единицу времени через разницу в миллисекундах, а затем преобразование между единицами времени будет основано на их кратности.

function timeFn(d1) {//di作为一个变量传进来
    //如果时间格式是正确的,那下面这一步转化时间格式就可以不用了
    var dateBegin = new Date(d1.replace(/-/g, "/"));//将-转化为/,使用new Date
    var dateEnd = new Date();//获取当前时间
    var dateDiff = dateEnd.getTime() - dateBegin.getTime();//时间差的毫秒数
    var dayDiff = Math.floor(dateDiff / (24 * 3600 * 1000));//计算出相差天数
    var leave1=dateDiff%(24*3600*1000)    //计算天数后剩余的毫秒数
    var hours=Math.floor(leave1/(3600*1000))//计算出小时数
    //计算相差分钟数
    var leave2=leave1%(3600*1000)    //计算小时数后剩余的毫秒数
    var minutes=Math.floor(leave2/(60*1000))//计算相差分钟数
    //计算相差秒数
    var leave3=leave2%(60*1000)      //计算分钟数后剩余的毫秒数
    var seconds=Math.round(leave3/1000)
    console.log(" 相差 "+dayDiff+"天 "+hours+"小时 "+minutes+" 分钟"+seconds+" 秒")
    console.log(dateDiff+"时间差的毫秒数",dayDiff+"计算出相差天数",leave1+"计算天数后剩余的毫秒数"
        ,hours+"计算出小时数",minutes+"计算相差分钟数",seconds+"计算相差秒数");
}
var t3="2017-08-18 04:56:38";
timeFn(t3);

demo时间差数据截图
Скриншот демонстрационных данных о разнице во времени

Неполный расчет месяц, год:

    //这里的dayDiff就是上文计算出的天数差
    let monthDiff=Math.floor(dayDiff/30);//以30天为一个月不够精准严谨
    //获取相差的月份
      if (monthDiff<12){
        timeThis=monthDiff+"个月前发布";//获取相差的月份
        return
      }
      let yearDiff=Math.floor(monthDiff/12);//获取相差的年份
      if(yearDiff>=1){
        timeThis=yearDiff+"年前发布";
        return
      }

Когда разница в количестве дней велика, просто подсчет количества дней уже не может удовлетворить потребности, потому что наш ПМ сказал, что 30 дней - это разделительная линия месяца, и тогда подсчет месяца здесь кажется сложным и мы не стали его изучать.

Получить количество дней в текущем месяце

    function getDays() {
       //构造当前日期对象
       var date = new Date();
       var year = date.getFullYear();//获取年份
       var mouth = date.getMonth() + 1;//获取当前月份
       var days;//定义当月的天数;
       if (mouth == 2) {//当月份为二月时,根据闰年还是非闰年判断天数
           days = year % 4 == 0 ? 29 : 28;
       }
       else if (mouth == 1 || mouth == 3 || mouth == 5 || mouth == 7 || mouth == 8 || mouth == 10 || mouth == 12) {
           //月份为:1,3,5,7,8,10,12 时,为大月.则天数为31;
           days = 31;
       }
       else {
           //其他月份,天数为:30.
           days = 30;
       }
       return days;
   }

Я нашел в Интернете функцию для получения количества дней в текущем месяце, и приведенных выше комментариев достаточно, поэтому я склею их вместе и свяжу ниже.

позже

Выше приведено содержание разницы во времени расчета в этой статье.Я надеюсь, что чтение этой статьи может вам немного помочь. Последний совет: как правило, не будет обрабатываться только один или два данных. Скорее всего, это будет массив. Вам необходимо обработать данные о времени каждого элемента массива. В настоящее время рекомендуется использовать forEach () для обхода всего массива.

Наконец: Если вам нужно перепечатать, пожалуйста, поставьте ссылку на оригинальный текст и подпишите его. Кодировать не просто,благодарныйслужба поддержки! Я пишу статью с менталитетом биржевых записей, и не хочу ее рвать, но приветствую подсказки. Тогда я надеюсь, что друзья, которые прочитают это, кликнуткак, также можнообрати внимание наПроверить меня.
сайт блога and Персональная домашняя страница Nuggets

Выше 2017.10.15

Использованная литература:

Js получить количество дней в текущем месяце
Js рассчитать разницу во времени (дни, часы, минуты, секунды)