js 時間各種展示總結(n天前,時間格式化)

js時間格式化

傳入什麼格式,就輸出什麼格式,默認{y}-{m}-{d} {h}:{i}:{s},你可以傳{y}/{m}/{d} {h}:{i}:{s},也可以{y}年{m}月{d}日,傳你需要的年月日時分秒和間隔符,是不是很好用,對了還有星期幾,例如{y}-{m}-{d} {h}:{i}:{s} 星期{a}

/**
 * Parse the time to string
 * @param {(Object|string|number)} time
 * @param {string} cFormat
 * @returns {string}
 */

export function parseTime(time, cFormat) {
  if (arguments.length === 0) {
    return null
  }
  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'
  let date
  if (typeof time === 'object') {
    date = time
  } else {
    if (typeof time === 'string' && /^[0-9]+$/.test(time)) {
      time = parseInt(time)
    }
    if (typeof time === 'number' && time.toString().length === 10) {
      time = time * 1000
    }
    date = new Date(time)
  }
  const formatObj = {
    y: date.getFullYear(),
    m: date.getMonth() + 1,
    d: date.getDate(),
    h: date.getHours(),
    i: date.getMinutes(),
    s: date.getSeconds(),
    a: date.getDay()
  }
  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {
    let value = formatObj[key]
    // Note: getDay() returns 0 on Sunday
    if (key === 'a') {
      return ['日', '一', '二', '三', '四', '五', '六'][value]
    }
    if (result.length > 0 && value < 10) {
      value = '0' + value
    }
    return value || 0
  })
  return time_str
}

剛剛、n分鐘前、n小時前,n天前

幾種一樣,看自己需求

/**
 * @param {number} time
 * @param {string} option
 * @returns {string}
 */
export function formatTime(time, option) {
  if (('' + time).length === 10) {
    time = parseInt(time) * 1000
  } else {
    time = +time
  }
  const d = new Date(time)
  const now = Date.now()

  const diff = (now - d) / 1000

  if (diff < 30) {
    return '剛剛'
  } else if (diff < 3600) {
    // less 1 hour
    return Math.ceil(diff / 60) + '分鐘前'
  } else if (diff < 3600 * 24) {
    return Math.ceil(diff / 3600) + '小時前'
  } else if (diff < 3600 * 24 * 2) {
    return '1天前'
  }
  if (option) {
    return parseTime(time, option)
  } else {
    return (
      d.getMonth() +
      1 +
      '月' +
      d.getDate() +
      '日' +
      d.getHours() +
      '時' +
      d.getMinutes() +
      '分'
    )
  }
}
export function dateDiff(timestamp) {
  // 補全爲13位
  let arrTimestamp = (timestamp + '').split('');
  for (let start = 0; start < 13; start++) {
    if (!arrTimestamp[start]) {
      arrTimestamp[start] = '0';
    }
  }
  timestamp = arrTimestamp.join('') * 1;

  let minute = 1000 * 60;
  let hour = minute * 60;
  let day = hour * 24;
  let week = day * 7;
  let now = new Date().getTime();
  let year = new Date().getFullYear(); // 獲取當前時間年份
  let createYear = new Date(timestamp).getFullYear(); // 獲取指定時間戳年份
  let diffValue = now - timestamp;
  let yearsDiff = year - createYear; // 獲取年份差

  // 如果本地時間反而小於變量時間
  if (diffValue < 0) {
    return '剛剛';
  }

  // 計算差異時間的量級
  let weekC = diffValue / week; // 相對於7天
  let dayC = diffValue / day; // 相對於24小時
  let hourC = diffValue / hour; // 相對於1小時
  let minC = diffValue / minute; // 相對於1分鐘

  // 數值補0方法
  let zero = function (value) {
    if (value < 10) {
      return '0' + value;
    }
    return value;
  };

  // 使用
  if (minC < 5) {
    return "剛剛";
  } else if (minC < 59) {
    return Math.ceil(minC) + "分鐘前";
  } else if (hourC < 23) {
    return Math.ceil(hourC) + "小時前";
  } else if (weekC < 1) {
    return Math.ceil(dayC) + "天前";
  } else if (weekC > 1) {
    return (function () {
      let date = new Date(timestamp);
      if (yearsDiff >= 1) {
        return date.getFullYear() + '/' + zero(date.getMonth() + 1) + '/' + zero(date.getDate());
      } else {
        return zero(date.getMonth() + 1) + '/' + zero(date.getDate());
      }
    })();
  }
}
// 微信公衆號發佈時間那截取的
(function(){
    if (window.__second_open__) return; 
    var first_js_time = +new Date();
    var showDate="";
    var svrDate=new Date("1544749949"*1000);
    var createDate=new Date("1544745600"*1000);
    var ct="1544745600"*1;
    var publish_time = "2018-12-14" || "";
    var cD={
      year:createDate.getYear(),
      month:createDate.getMonth()+1,
      date:createDate.getDate()
    };
    svrDate.setHours(0);
    svrDate.setMinutes(0);
    svrDate.setSeconds(0);
    var todayDate=svrDate.getTime()/1000;
    svrDate.setDate(1);
    svrDate.setMonth(0);
    var yearDate=svrDate.getTime()/1000;
    
    if(ct>=todayDate){
      showDate="今天";
    
    }else if(ct>=todayDate-60*60*24){
       showDate="昨天";
    
    }else if(ct>=todayDate-2*60*60*24){
      showDate="前天";
    }else if(ct>=todayDate-3*60*60*24){
      showDate="3天前";
    }else if(ct>=todayDate-4*60*60*24){
      showDate="4天前";
    }else if(ct>=todayDate-5*60*60*24){
      showDate="5天前";
    }else if(ct>=todayDate-6*60*60*24){
      showDate="6天前";
    }else if(ct>=todayDate-2*7*60*60*24){
      showDate="1周前";
    }else if(ct>=yearDate){
      var tmp = publish_time.split('-');
      showDate = parseInt(tmp[1]) + '月' + parseInt(tmp[2]) + '日';
       }else{
      showDate=publish_time;
    };
    if(document.getElementById("publish_time")){
      document.getElementById("publish_time").innerText=showDate;
    }
})();

判斷時間段,白天黑夜

export function parseTimeSlot() {
  let now = new Date(),
    hour = now.getHours()
  if (hour < 6) {
    return ("凌晨好!")
  } else if (hour < 9) {
    return ("早上好!")
  } else if (hour < 12) {
    return ("上午好!")
  } else if (hour < 14) {
    return ("中午好!")
  } else if (hour < 17) {
    return ("下午好!")
  } else if (hour < 19) {
    return ("傍晚好!")
  } else if (hour < 22) {
    return ("晚上好!")
  } else {
    return ("夜裏好!")
  }
}
export function isNight () {
  let now = new Date(),
    hour = now.getHours()
  if (hour >= 7 && hour < 19) {
    return false
  } else if (hour < 7 || hour >= 19) {
    return true
  }
}

判斷冬夏秋冬

export function parseSeason() {
  let now = new Date(),
    month = (now.getMonth()) + 1
  if (month >= 3 && month <= 5) {
    return 'spring'
  } else if (month >= 6 && month <= 8) {
    return 'summer'
  } else if (month >= 9 && month <= 11) {
    return 'autumn'
  } else if (month = 12 || month <= 3) {
    return 'winter'
  }
 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章