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 ===...