常用日期处理函数(相差几天、格式化、几天前后)

212 阅读2分钟

    天上人间 
    如果真值得歌颂
    也是因为有你 
    才会变得闹哄哄
        
        ——王菲《人间》

说明

  平时项目中需要经常对日期做一些操作,比如,日期格式不统一,获取几天前后的日期,获取两个日期之间的天数差等,下面把常用的日期处理函数简单介绍一下。

日期常用操作

日期相差天数

/**日期相减得到天数
 * date1:开始日期,date2结束日期
 * 例子:
 * var a1="12-19-2018";
 * var a2="2019/1/7";
 * var b=GetNumberOfDays(a1,a2)
 * console.log(b);
 **/
function GetNumberOfDays(date1, date2) {
  var a1 = Date.parse(new Date(date1));
  var a2 = Date.parse(new Date(date2));
  //核心:时间戳相减,然后除以天数
  var day = parseInt((a2 - a1) / (1000 * 60 * 60 * 24)); 
  return day;
}

格式化日期

/**格式化时间
 * 该方法有效防止后台传数据格式发生变化例如:10-19-2017 <--> 2017/10/19
 * 思路:后台的时间日期 --> 时间戳 --> 标准的时间日期
 * y=年,m=月,d=天,h=时,u=分,s=秒
 * 例子:console.log(DateFormat("2017/12/31  23:12:54"))
 **/
function DateFormat(dateTime) {
  var dateParse = Date.parse(new Date(dateTime)); //转成时间戳
  var time = new Date(dateParse); //再转成标准时间
  var y = String(time.getFullYear());
  var m = String(time.getMonth() + 1);
  var d = String(time.getDate());
  var h = String(time.getHours());
  var u = String(time.getMinutes());
  var s = String(time.getSeconds());
  return {
    // y,m,d,h,u,s,
    y: y,
    m: m,
    d: d,
    h: h,
    u: u,
    s: s
  };
  //return m+"/"+d//直接输入自己想要的格式
}

获取几天前后的日期

/* 根据当天获取某一天
  console.log(GetDay(0))//当天
  console.log(GetDay(-7))//7天前
  console.log(GetDay(7))//7天后
  */
function GetDay(day) {
  function doHandleMonth(month) {
    var m = month;
    if (month.toString().length == 1) {
      m = "0" + month;
    }
    return m;
  }
  var today = new Date();
  var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day;
  today.setTime(targetday_milliseconds); //注意,这行是关键代码
  var tYear = today.getFullYear();
  var tMonth = today.getMonth();
  var tDate = today.getDate();
  tMonth = doHandleMonth(tMonth + 1);
  tDate = doHandleMonth(tDate);
  return tYear + "-" + tMonth + "-" + tDate;
}