JS方法记录

文章介绍了JavaScript中计算两个日期间的工作日数,判断字符串是否包含字母,数字前自动补零的方法。同时展示了时间比较的各种场景,包括普通日期时间、特殊格式和字符串日期时间的比较。还涉及到了数组操作,如删除数组中的特定元素,以及获取特定日期等实用函数。此外,文章还提到了简单的数据脱敏技术。
摘要由CSDN通过智能技术生成

1. 计算工作日

  var date = limsCdcFolder.countWorkDay(data.acceptanceDate, value);
                        this.setData({
                            ext$: {
                                estimateddays: date
                            }
                        })

//计算工作日
countWorkDay: function (date1, date2) {
    date1 = limsCdcFolder.stringToDate(date1);
    date2 = limsCdcFolder.stringToDate(date2);
    delta = (date2 - date1) / (1000 * 60 * 60 * 24) + 1; // 计算出总时间

    weeks = 0;
    for (i = 0; i < delta; i++) {
        if (date1.getDay() == 0 || date1.getDay() == 6) weeks++;  // 若为周六或周天则加1
        date1 = date1.valueOf();
        date1 += 1000 * 60 * 60 * 24;
        date1 = new Date(date1);
    }
    return delta - weeks;
},

2.判断字符串是否包含字母

!Pattern.compile(".*[a-zA-Z]+.*").matcher(orderNos).find() 

3.数字前自动补0

 java  

System.out.pranf("%03d",11)

4. js比较时间

var expirydDate = addFormData.expirydDate;
var solupreparaExpirydDate = Date.parse(new Date(expirydDate.replace(/g/,"")))
for(var i = 0 ;i <complist.length; i++){
    var row = complist[i];
    var compExpirydDate = row.expirationdate
    if (compExpirydDate != null && compExpirydDate != ""){
        var compExpirydDate = Date.parse(new Date(compExpirydDate.replace(/g/,"")));
        if (solupreparaExpirydDate > compExpirydDate){
            xxx.alert('过期日期大于物质过期日期,请重新选择');
            return;

        }
    }
}

其他时间操作

在开发中,需要处理一些时间之间的差值,后端传给我们开始时间与结束时间,我们则需要用当前时间来判断两组时间之间的差值,在js中可以这样写,上代码:

    let now = new Date()
    let year = now.getFullYear()
    let month = now.getMonth()
    let date = now.getDate()
    let hour = now.getHours()
    let minu = now.getMinutes();
    let sec = now.getSeconds()
    month = month + 1
    if (month < 10){ month = "0" + month;}
    if (date < 10) date = "0" + date;
    if (hour < 10) hour = "0" + hour;
    if (minu < 10) minu = "0" + minu;
    if (sec < 10) sec = "0" + sec;
    let time = year + '-' + month + '-' + date + ' ' + hour + ':' + minu + ':' + sec

    Date.prototype.diff = function(date){
        return (this.getTime() - date.getTime())/(24 * 60 * 60 * 1000)
     }

     let nowTime = new Date(now)
     let end = new Date('2021/03/26 12:43:45')
     let endTime = end.diff(nowTime)

如果想要向下取整可以这样写:

  let floorTime = Math.floor(endTime)
如果想要向上取整可以这样写:

  let ceilTime = Math.ceil(endTime)

普通日期时间比较

泛指格式相同的日期时间

var date1 = new Date("2020-3-15");
var date2 = new Date("2020-2-29");
var result = date1 > date2;        
console.log(result);                //true
特殊日期时间比较

因格式不同,比较前,我们需要将日期时间格式化

var date1 = new Date("2020-3-15");
var date2 = new Date("2020/2/29");
var result = Date.parse(date1) > Date.parse(date2);
console.log(result);                                //true
字符串类型日期时间比较 

用于不同格式之间的字符串日期时间比较,统一格式化后再比较

var date1 = "2020-3-15";
var date2 = "2020/2/29";
var result = date1.replace(/\-/g,'/') > date2.replace(/\-/g,'/');
console.log(result); 


var myDate = new Date();
myDate.getYear();    //获取当前年份(2位)
myDate.getFullYear();  //获取完整的年份(4位,1970-????)
myDate.getMonth();    //获取当前月份(0-11,0代表1月)
myDate.getDate();    //获取当前日(1-31)
myDate.getDay();     //获取当前星期X(0-6,0代表星期天)
myDate.getTime();    //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours();    //获取当前小时数(0-23)
myDate.getMinutes();   //获取当前分钟数(0-59)
myDate.getSeconds();   //获取当前秒数(0-59)
myDate.getMilliseconds();  //获取当前毫秒数(0-999)
myDate.toLocaleDateString();   //获取当前日期
var mytime=myDate.toLocaleTimeString();   //获取当前时间
myDate.toLocaleString( );    //获取日期与时间

获取当前时间

/**获取当前日期 */
getTodayDate:function(){
    var date=new Date();
    var year=date.getFullYear();
    var day=date.getDate();
    if(day.length<2){
        day="0"+day;
    }
    var month=date.getMonth()+1;
    if(month.length<2){
        month="0"+month;
    }
  return year+"-"+month+"-"+day;  
},

计算两时间相差天数

getDays:function (start, end) {
    let dateSpan, iDays
    start = Date.parse(start)
    end = Date.parse(end)
    dateSpan = end - start
    dateSpan = Math.abs(dateSpan)
    iDays = Math.floor(dateSpan / (24 * 3600 * 1000))
    return iDays;
}
Calendar date = Calendar.getInstance();
String year = String.valueOf(date.get(Calendar.YEAR));

5.简单脱敏

hideCode: function (str, frontLen, endLen) {
    var len = str.length - frontLen - endLen;
    var xing = '';
    for (var i = 0; i < len; i++) {
        xing += '*';
    }
    return str.substring(0, frontLen) + xing + str.substring(str.length - endLen);
},

/**
 * 对个人信息进行脱敏
 * @param type,value
 */
desensitize: function (type, value) {
    if (value === null) {
        return;
    }
    if (type === 'name') {
        var str = fullName.substr(0, 1);
        for (let i = 0; i < fullName.length - 1; i++) {
            value += '*';
        }
        return str;
    } else if (type === 'phone') {
        // 手机号正则校验
        var phoneReg = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{4}(\d{4})$/;
        return value.replace(phoneReg, '$1****$2');
    } else if (type === 'IDcard') {
        // 简易身份证号码正则
        var idNoReg = /(\d{6})(\d*)(\w{3})/;
        if (idNoReg.test(value)) {
            var text1 = RegExp.$1;
            var text3 = RegExp.$3;
            var text2 = RegExp.$2.replace(/./g, "*");
            return text1 + text2 + text3;
        }
    }
},

6.正则匹配数字 汉字

7 两个数组操作

例如: array2中包含了array1数组,怎么在array2中删除array1的内容。

  array1 = [ {id:10},{id:20} ]
  array2 = [ {id:10},{id:20},{id:30},{id:40} ] 


for循环写法:

     array1 = [ {id:10},{id:20} ]
     array2 = [ {id:10},{id:20},{id:30},{id:40} ] 
     let data = []
     for(let i=0;i<array2.length;i++){
         if(!array1.find(item=>item.id == array2[i].id)){
              data.push(array2[i]);
           }
     }
     console.log(data)


结果:

第二种写法:

   array1 = [ {id:10},{id:20} ]
   array2 = [ {id:10},{id:20},{id:30},{id:40} ] 
   let data = []
   array2.map((el, index) => {
     if (!array1.find(item => item.id == el.id)) {
        data.push(array2[index]);
     }
   })
   console.log(data)


结果:

7 获取本月和上月的某一天数据

    /**
     * 获取上个月5号的时间
     * @param date 下次校准时间
     * @returns {Date} 器具有效期
     */
    getLastFiveDate : function (date){
        var year=date.getFullYear();
        var month=date.getMonth();
        var by=[year,month+1].join('-');
        if(month == 0){
            var sy = [year-1,12].join('-');
        }else{
            var sy = [year,month].join('-');
        }
        //本月1号
        this.value1 = new Date(by.replace(/-/,"/"));
        //上月5号
        this.value2 = new Date(sy.replace(/-/,"/")+"/5");
        return this.value2;
    },
  • 当前月第一天

  •  CurrentMonthFirst(){
           var date=new Date();
           date.setDate(1);
           return date;
      },

  • 当前月最后一天
  • CurrentMonthLast(){
          var date=new Date();
          var currentMonth=date.getMonth();
          var nextMonth=++currentMonth;
          var nextMonthFirstDay=new Date(date.getFullYear(),nextMonth,1);
          var oneDay=1000*60*60*24;
          return new Date(nextMonthFirstDay-oneDay);
      },

  • 上月的第一天和最后一天
  • gettime2(){
         let nowdays = new Date();
         let year = nowdays.getFullYear();
         let month = nowdays.getMonth();
         if(month==0){
             month=12;
             year=year-1;
         }
         if (month < 10) {
              month = "0" + month;
         }
         let firstDayOfPreMonth = year + "-" + month + "-" + "01";
         let lastDay = new Date(year, month, 0);
         let lastDayOfPreMonth = year + "-" + month + "-" + lastDay.getDate();
         firstDayOfPreMonth = firstDayOfPreMonth.toString();
         lastDayOfPreMonth = lastDayOfPreMonth.toString();
         this.value4 = [];
         this.value4.push(firstDayOfPreMonth);
         this.value4.push(lastDayOfPreMonth);
      },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值