关于 js 时间Date的相关用法

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

用前端时间控件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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值