JavaScript时间字符串进行格式转换 当天显示时间 1天内显示昨天 7天内显示星期 7天外显示年月日

转自:https://blog.csdn.net/u014520745/article/details/52605189

<!DOCTYPE html>
<html lang="zh-cmn-Hans">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
  <style>
    body:before {
      content: "";
      position: fixed;
      top: -10px;
      left: 0;
      width: 100%;
      height: 10px;

      -webkit-box-shadow: 0px 0px 10px rgba(0,0,0,.8);
      -moz-box-shadow: 0px 0px 10px rgba(0,0,0,.8);
      box-shadow: 0px 0px 10px rgba(0,0,0,.8);

      z-index: 100;
    }
  </style>
</head>
<body>
  <input type="text" id="input" value="2020-05-01 14:03:59">
  <input type="submit" onclick="fun1();">
  <div id="div"></div>
</body>
<script>
function fun1() {
  var date1 = document.getElementById("input").value
  var date2 = trans(date1)
  document.getElementById("div").innerHTML = date2
}

function trans(date) {
  var timestamp = getTimestamp(date)
  var d = new Date(timestamp)
  var t = new Date()
  var objd = {
    'Y': d.getFullYear(),
    'm': parseInt(d.getMonth()) + 1,
    'd': parseInt(d.getDate()),
    'w': d.getDay(),
    'H': d.getHours(),
    'i': d.getMinutes(),
    's': d.getSeconds(),
  }
  if (d.getMinutes() < 10) {
    // 分钟数值不足2位补充前置0
    objd.i = '0' + objd.i
  }
  var objt = {
    'Y': t.getFullYear(),
    'm': parseInt(t.getMonth()) + 1,
    'd': parseInt(t.getDate()),
    'w': t.getDay(),
    'H': t.getHours(),
    'i': t.getMinutes(),
    's': t.getSeconds(),
  }
  console.log(objd)
  var timeStr = ''
  var dayPerMonthAddTime = getDayPerMonth(objd.Y)
  var week = ['周日','周一','周二','周三','周四','周五','周六']
  if(objd.Y == objt.Y && objd.m == objt.m && objd.d == objt.d) {
    timeStr += objd.H + ':' + objd.i
  } else if ((objd.Y == objt.Y && objd.m == objt.m && objd.d == objt.d - 1) || (objd.Y == objt.Y && objt.m - objd.m == 1 && dayPerMonthAddTime[objd.m] == objd.d && objt.d == 1) || (objt.Y - objd.Y == 1 && objd.m == 12 && objd.d == 31 && objt.m == 1 && objt.d == 1)) {
    timeStr += '昨天 ' + objd.H + ':' + objd.i + ' '
  } else if ((objd.Y == objt.Y && objd.m == objt.m && objt.d - objd.d < 7) || (objd.Y == objt.Y && objt.m - objd.m == 1 && dayPerMonthAddTime[objd.m] - objd.d + objt.d < 7 || (objt.Y - objd.Y == 1 && objd.m == 12 && objt.m == 1 && 31 - objd.d + objt.d < 7))) {
    timeStr += week[objd.w] + ' ' + objd.H + ':' + objd.i
  } else {
    timeStr += objd.Y + '' + objd.m + '' + objd.d + '' + objd.H + ':' + objd.i
  }

  if(objd.H < 13) {
    timeStr += ' 上午'
  } else {
    timeStr += ' 下午'
  }

  return timeStr
}

function getTimestamp(date) {
  return Date.parse(new Date(date))
}

function getDayPerMonth(year) {
  var arr = []
  arr[1] = 31
  arr[3] = 31
  arr[4] = 30
  arr[5] = 31
  arr[6] = 30
  arr[7] = 31
  arr[8] = 31
  arr[9] = 30
  arr[10] = 31
  arr[11] = 30
  arr[12] = 31
  if((year%4 == 0 && year%100 != 0) || (year%400 == 0)) {
    arr[2] = 29
  } else {
    arr[2] = 28
  }
  return arr
}
</script>
</html>

 

posted @ 2020-04-17 15:51  生如夏花死如秋叶  阅读(299)  评论(0)    收藏  举报