小プログラムwxsの時間フォーマットとフォーマット時間とdate時間は互いに回転します.


WXS(WeiXin Script)は小さいプログラムのシナリオ言語で、wxsとjavascriptは異なる言語で、自分の文法があって、javascriptと一致しません.その中には多くの日常的に使われているjavascript関数が含まれています.wxsでは同じように使用できません.最近はリストを作成する時、時間の書式設定操作に関連しています.この問題について、以前書いたフォーマットツールの関数は直接に小さいプログラム項目のwxsファイルにコピーして、関数は正常に実行できません.この中には以下のいくつかのエラーが含まれています.
  • 正規表現は文字列のreplace関数での使用方法が異なり、var a=/[0−9]/このような方法で直接的に宣言することはできません.正しい方式はvar reg=getRegExp(「-」「g」)である.
  • は、現在の時間をnew Date()ではなく、getDate方式で取得する.
  • get Date('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