美文网首页
[JS]时间戳与日期之间的转换

[JS]时间戳与日期之间的转换

作者: 泉落云生 | 来源:发表于2018-04-10 21:19 被阅读65次
  1. 获取本地时间戳
//常规
var timesTamp=new Date().getTime();
//简洁
var timesTamp=+new Date();
//一元运算符的隐式转换:+new Date() 相当于 ToNumber(new Date())
  1. 时间戳转换为日期
//timesTamp                                                  example:1523358325476
var nowDate = new Date(timesTamp)                          //Tue Apr 10 2018 19:05:25 GMT+0800 (中国标准时间)
var nowDate = new Date(timesTamp).toLocaleString()         //2018/4/10 下午7:05:25
  1. 日期转换为时间戳
//nowDate                                                    example:Tue Apr 10 2018 19:05:25 GMT+0800 (中国标准时间)
var transTamp = Date.parse(nowDate)                        //1523358325476

时间戳与日期转换封装

    function TransDateToTamp(obj,str="yy:mm:dd"){//时间戳||字符串 数据格式
        switch(typeof obj){
            case 'string':
            return Date.parse(obj);

            case 'object':
            return +obj;//对象 new Date()
            
            case 'number':
            let newDate = new Date(obj);
            switch(str){
                case "yy:mm:dd":return newDate.toLocaleDateString();
                case "hh:mm:ss":return newDate.toLocaleTimeString();
                case "yy:mm:dd hh:mm:ss":return newDate.toLocaleString();
            }

            default:
            throw new Error("Params is wrong")
        }
    }
    

    console.log(TransDateToTamp('2018/01/09'))//1515427200000
    console.log(TransDateToTamp(1514740140000))//2018/1/1

//看看拉倒

重写

/*example:
 * {
 *  tamp:1514740140000,
 *  form:'yy:mm:dd',
 *  day:'2018-01-01',
 *  cbform:'s'/'ms'
 * }
 * */
    function TransDateToTamp(obj){
        if(obj instanceof Date){                   //如果是日期对象
            return +obj;
        }
        else if(obj.tamp){                         //如果是时间戳

            let newDate = new Date(obj.tamp); 

            switch(obj.form?obj.form: "yy:mm:dd"){
                case "yy:mm:dd":return newDate.toLocaleDateString();
                case "hh:mm:ss":return newDate.toLocaleTimeString();
                case "yy:mm:dd hh:mm:ss":return newDate.toLocaleString();
                default:throw new Error("Params is wrong");
            }

        }
        else if(obj.day){                          //如果是字符串
            let newStr = obj.day.replace(/([-:;*,.,。]|[\u4e00-\u9fa5])/g,'/');//所有日期分隔符号(汉字)转化为'/'

            if(obj.cbfrom?obj.cbfrom:'ms'){
                return Date.parse(newStr)/1000
            }else{
                return Date.parse(newStr);
            }
        }else{
            throw new Error("Params is wrong")
        }
    }

相关文章

网友评论

      本文标题:[JS]时间戳与日期之间的转换

      本文链接:https://www.haomeiwen.com/subject/avwnhftx.html