애플 릿 wxs 의 시간 포맷 및 포맷 시간 과 date 시간 이 서로 바 뀝 니 다.

WXS (WeiXin Script) 는 애플 릿 의 스 크 립 트 언어 입 니 다. wxs 와 javascript 는 서로 다른 언어 로 문법 이 있 으 며 자바 script 과 일치 하지 않 습 니 다.그 중에서 도 자 바스 크 립 트 함 수 를 많이 포함 하고 있 으 며, wxs 에 서 는 똑 같이 사용 할 수 없습니다.최근 에 목록 을 만 들 때 시간 포맷 작업 과 관련 이 있 습 니 다.이 문제 에 부 딪 혔 습 니 다. 이전에 작성 한 포맷 도구 함수 가 애플 릿 프로젝트 의 wxs 파일 에 직접 복사 되 어 함수 가 정상적으로 실행 되 지 않 습 니 다.그 중 에는 아래 의 몇 가지 잘못 이 포함 되 어 있다.
  • 정규 표현 식 은 문자열 의 replace 함수 에서 사용 하 는 방법 이 다 르 기 때문에 var a = / [0 - 9] / 를 직접 사용 할 수 없습니다.올 바른 방식 은 var reg = getRegExp ("-", "g") 입 니 다.
  • 현재 시간 은 new Date () 를 통 해 얻 을 수 없 으 며, getDate 방법 으로 얻 을 수 있 습 니 다.
  • getDate ('2018 / 12 / 12') 는 해당 날짜 의 date 형식의 시간 을 얻 을 수 있 습 니 다.

  • 위의 공통점 과 차이 점 에 따라 수 정 된 시간 포맷 함수 코드 는
    var formatNumber = function (n) {
      n = n.toString()
      return n[1] ? n : '0' + n
    }
    
    var regYear = getRegExp("(y+)", "i");
    
    var dateFormat = function (timestamp, format) {
      if (!format) {
        format = "yyyy-MM-dd hh:mm:ss";
      }
      timestamp = parseInt(timestamp);
      //   getDate()    date     
      var realDate = getDate(timestamp);
      function timeFormat(num) {
        return num < 10 ? '0' + num : num;
      }
      var date = [
        ["M+", timeFormat(realDate.getMonth() + 1)],
        ["d+", timeFormat(realDate.getDate())],
        ["h+", timeFormat(realDate.getHours())],
        ["m+", timeFormat(realDate.getMinutes())],
        ["s+", timeFormat(realDate.getSeconds())],
        ["q+", Math.floor((realDate.getMonth() + 3) / 3)],
        ["S+", realDate.getMilliseconds()],
      ];
      var reg1 = regYear.exec(format);
      // console.log(reg1[0]);
      if (reg1) {
    
        format = format.replace(reg1[1], (realDate.getFullYear() + '').substring(4 - reg1[1].length));
      }
      for (var i = 0; i < date.length; i++) {
        var k = date[i][0];
        var v = date[i][1];
        // getRegExp            
        var reg2 = getRegExp("(" + k + ")").exec(format);
        if (reg2) {
          format = format.replace(reg2[1], reg2[1].length == 1
            ? v : ("00" + v).substring(("" + v).length));
        }
      }
      return format;
    }

    포맷 된 날짜, 시간 문자열 을 시간 스탬프 로 변환 합 니 다.
    function parse(fmt) {
      fmt1 = fmt.substring(0, 19);
      var reg = getRegExp("-", "g");
      fmt2 = fmt1.replace(reg, '/');
      var timestamp = getDate(fmt2).getTime();
      return timestamp;
    }

    호출 방법 은 다음 과 같다.
    function getDateByDateTimeFmt(dateTimeFmt) {
      return dateFormat(parse(dateTimeFmt), 'MM dd ');
    }
    getDateByDateTimeFmt('2012-12-12 13:12:12') // => 12 12 

    좋은 웹페이지 즐겨찾기