JSFiddle - React, Tailwind, and code Playground

by CntChen

JavaScript

hwsearcher.timeMachine = hwsearcher.timeMachine || {};
(function (){
  var SEPARATOR = '@';
  var timeArr = ['y','mon','d','w','h','m','s'];
  var TimePickRexExp = /(\-?\d+(y|mon|d|w|h|m|s))?@?(all|now|y|mon|d|w|h|m|s)/;
  var defaultTimeStamp = -1;

  function BeYoungAgain(timeRuleStr){
    timeRuleStr = timeRuleStr.toLowerCase();

    if(!TimePickRexExp.test(timeRuleStr)){
      return defaultTimeStamp;
    }

    var timeBackNum,
        timeBackUnit,
        timeStoneUnit;
    // 分词器
    if(timeRuleStr.indexOf(SEPARATOR) <= 0){// 没有时间倒退值和分隔符 // 没有时间倒退值
        timeStoneUnit = timeRuleStr.replace(SEPARATOR, '');
    }
    else {
      timeBackNum = parseInt(timeRuleStr.split(SEPARATOR)[0].replace(/^\-?/, '-').replace(/(y|mon|d|w|h|m|s)$/, ''));
      timeBackUnit = timeRuleStr.split(SEPARATOR)[0].replace(/^\-?\d+/, '');
      timeStoneUnit = timeRuleStr.split(SEPARATOR)[1];
    }

    if('all' === timeStoneUnit){
      return defaultTimeStamp;
    }

    if(null === timeBackNum && null === timeBackUnit){
       return getTimeStoneDate(timeStoneUnit).getTime();
    }else{
       return getTimeBackDate(timeBackNum, timeBackUnit, timeStoneUnit).getTime();
    }
  }

  function getTimeBackDate(timeBackNum, timeBackUnit, timeStoneUnit){
    var date = getTimeStoneDate(timeStoneUnit);

    var index = timeArr.indexOf(timeBackUnit);
    index === timeArr.indexOf('y')?(function (){date.setYear(date.getFullYear() + timeBackNum);})():{};
    index === timeArr.indexOf('mon')?(function (){date.setMonth(date.getMonth() + timeBackNum);})():{};
    index === timeArr.indexOf('d')?(function (){date.setDate(date.getDate() + timeBackNum);})():{};
    index === timeArr.indexOf('w')?(function (){date.setDate(date.getDate() + timeBackNum*7)})():{};
    index === timeArr.indexOf('h')?(function (){date.setHours(date.getHours() + timeBackNum);})():{};
    index === timeArr.indexOf('m')?(function (){date.setMinutes(date.getMinutes() + timeBackNum);})():{};
    index ===...