关于 js 时间Date的相关用法

mac2026-06-04  7

关于前段时间工作要求在前端页面根据金额、时间、还款模式编写自动生成还款明细列表,找了很多关于时间计算和格式转换的答案,最后自己编写了一个方法先用着。

用前端时间控件Date生成一个格式为ymd的时间,用getValue()方法获取时间,传入以下方法,返回一个yyyyMMdd的时间格式

//date:标准时间,addmonth:要加上几个月,返回时间格式为:20191101     getMStartDate:function(date,addmonth) {         //获取年份         var myyear = date.getFullYear();         //获取月份         var mymonth = date.getMonth();         //获取天数         var myweekday = date.getDate();         //月份是从0开始         var month = mymonth + addmonth;         if(month < 9){//月份小于10             month = "0" + (totalmonth+1);         }else if(month >10){//月份大于11月             var n = parseInt(month/12)              month = (month+1)-12*n;             myyear = myyear+n;         }else{//大于9月份小于12月份             month = month + 1;         }         //判断是否二月份         if(myweekday >28){             if("2"==month){                 //判断是否闰年                 if(myyear%4==0&&myyear%100!=0||myyear%400==0){                     myweekday=29;                 }else{                     myweekday=28;                 }             }             if("4"==month || "6"==month|| "9"==month || "11"==month){                 myweekday=30;             }         }         //月份小于10月要前面补一个0         if (month < 10) {             month = "0" + month;         }         //天数少于10天前面要补一个0         if (myweekday < 10) {             myweekday = "0" + myweekday;         }         //返回八位的日期格式         return (myyear + "" + month + "" + myweekday);     },

 

一:Date对象是什么

Date 对象用于处理日期和时间。

二:Date创建语法

1. 直接获取当前时间为标准时间

  var date = new Date()  

  console.log(date)  //Tue Dec 12 2017 23:09:42 GMT+0800 (中国标准时间)

  注释:Date 对象会自动把当前日期和时间保存为其初始值。

2. 指定时间转变成标准时间

  var date1 = new Date("January 12,2006 22:19:35")

  console.log(date1)  //Thu Jan 12 2006 22:19:35 GMT+0800 (中国标准时间)

  其下面几种格式都可以:

  // new Date("month dd,yyyy hh:mm:ss");   // new Date("month dd,yyyy");   // new Date(yyyy,mth,dd,hh,mm,ss);   // new Date(yyyy,mth,dd);   // new Date(ms);

三:常用的对象方法

  date.getFullYear()  //2017  从 Date 对象以四位数字返回年份

  date.getMonth()  //11  从 Date 对象返回月份 (0 ~ 11)

  date.getDay()  //2  从 Date 对象返回一周中的某一天 (0 ~ 6)

  date.getDate()  //12  从 Date 对象返回一个月中的某一天 (1 ~ 31)

  date.getHours()  //23  返回 Date 对象的小时 (0 ~ 23)

  date.getMinutes()  //30  返回 Date 对象的分钟 (0 ~ 59)

  date.getSeconds()  //54  返回 Date 对象的秒数 (0 ~ 59)

  date.getMilliseconds()  返回 Date 对象的毫秒(0 ~ 999)

  date.getTime()  返回 1970 年 1 月 1 日至今的毫秒数

四:各案例转换

1.  var time = “2017-12-12”转换成毫秒时间戳

  new Date( time.replace(/-/g,"/") ).getTime()   //1513008000000

 

2. var time = 1513008000000转换成“2017-12-12”

 注意:time不能是string要是number

  var date = new Date(time)

  var year1 = date2.getFullYear()   var month = date2.getMonth()   var today = date2.getDate()   var Time1 = year1 + "-" + month + "-" + today

 

赋某日期为日期类型new Date(myYear,myMonth,myDate);//当myDate为0时,返回当前月份的上月末日期

当前日期now

new Date()设置日期分钟为0 now.setMinutes(0)设置当前日期秒为1now.setSeconds(1)

当前日期为本周的第几天,星期三返回3

nowDayOfWeek

now.getDay()

当前日

nowDay

now.getDate()

当前月

nowMonth

now.getMonth();//0为一月,1为2月,...

当前年

nowYear

nowYear = now.getYear();

nowYear += nowYear<2000?1900:0;

格式化日期:yyyy-MM-ddfunction formatDate(date,fmt) {  var myyear = date.getFullYear();  var mymonth = date.getMonth()+1;  var myweekday = date.getDate();  if(mymonth < 10){  mymonth = "0" + mymonth;  }  if(myweekday < 10){  myweekday = "0" + myweekday;  }  return (myyear+"-"+mymonth + "-" + myweekday);  }    格式化日期:任意格式    function dateFtt(fmt,date) {   var o = {     "M+" : date.getMonth()+1, //月份     "d+" : date.getDate(), //日     "h+" : date.getHours(), //小时     "m+" : date.getMinutes(), //分     "s+" : date.getSeconds(), //秒     "q+" : Math.floor((date.getMonth()+3)/3), //季度     "S" : date.getMilliseconds() //毫秒   };   if(/(y+)/.test(fmt))     fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));   for(var k in o)     if(new RegExp("("+ k +")").test(fmt))       fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));   return fmt; }  两个日期间的间隔天数function getMonthDays(myMonth){ //此处计算的是一个月的天数 var monthStartDate = new Date(nowYear, myMonth, 1);  var monthEndDate = new Date(nowYear, myMonth + 1, 1);  var days = (monthEndDate - monthStartDate)/(1000 * 60 * 60 * 24);  return days;  } 

本周的开始日期 

weekStartDate

new Date(nowYear, nowMonth, nowDay - nowDayOfWeek);

本周的结束日期 

weekEndDate

new Date(nowYear, nowMonth, nowDay + (6 - nowDayOfWeek)); 

本月初

monthStartDate

new Date(nowYear, nowMonth, 1); 

now.setDate(1);

本月所属季度

nowQuarter

nowMonth ++;

parseInt(nowMonth/3+(nowMonth%3==0?0:1))

 

nowMonth ++;

Math.ceil(nowMonth/3)

上月初

lastMonthStart

new Date(nowYear, lastMonth, 1);

 

lastMonthDate = new Date();

lastMonthDate.setDate(1);

lastMonthDate.setMonth(lastMonthDate.getMonth()-1)

 

new Date(myYear,myMonth-1,1)

上月末

lastMonthEnd

new Date(nowYear, lastMonth, getMonthDays(lastMonth));

 

new Date(myYear,myMonth,0);

本季度开始月份

quarterStartMonth

if(nowMonth<3){  return 0;  }else if(2<nowMonth && nowMonth<6){  return 3;  }else if(5<nowMonth && nowMonth<9){  return 6;  }else{ //if(nowMonth>8){  return 9;  }   

本季度的开始日期

quarterStartDate

new Date(nowYear, quarterStartMonth, 1); 

本季度的结束日期

quarterEndDate

var quarterEndMonth = quarterStartMonth + 2;  var quarterStartDate = new Date(nowYear, quarterEndMonth, getMonthDays(quarterEndMonth)); 

 

var quarterEndMonth = quarterStartMonth + 2;  var quarterStartDate = new Date(nowYear, quarterEndMonth+1, 0); 

取与今天偏差为o天的日期new Date(now.getTime()+o*24*60*60*1000)

 

最新回复(0)