《造了个轮子》一篇文章读懂js-日期对象

轮子.png

1.基础

// 获取中国标准时间
var date = new Date(); //Wed Apr 22 2020 14:41:58 GMT+0800 (中国标准时间)
//方法一
var timestamp = (new Date()).getTime();
console.log(timestamp); //1495302061441
//方法二
var timestamp2 = (new Date()).valueOf();
console.log(timestamp2); //1495302061441
//方法三
var timestamp3 = Date.parse(new Date());
console.log(timestamp3); //1495302061000
//第一种和第二种是获取了当前毫秒的时间戳
//最后一种获取的时间戳是把毫秒改成000显示
var year = date.getFullYear().toString(); //年
var month = date.getMonth() + 1; //月
var day = date.getDate(); //日
var hour = date.getHours(); //时
var minute = date.getMinutes(); //分
var second = date.getSeconds(); //秒
console.log(year, month, day, hour, minute, second) //2020 4 22 14 57 8
console.log(year + '-' + month + '-' + day + ' ' + hour + ':' + minute + ':' + second)

2. 获取当前时间转化格式为yyyy-MM-dd HH:mm:ss

console.log(year+'-'+month+'-'+day+' '+hour+':'+minute+':'+second)//2020-05-21 00:00:00

3. 获取指定日期时间戳(两种方式)

console.log((new Date("2020-05-21 00:00:00")).getTime()/1000)//getTime()获取的为毫秒
console.log((new Date("2020-05-21 00:00:00")).getTime()/1000)

3. 知道时间戳转化格式为yyyy-MM-dd HH:mm:ss

function timestampToTime(timestamp) {
    console.log(timestamp.toString().length)
    var numLength = timestamp.toString().length;
    var date = '';
    if(numLength==10){ //时间戳为10位需*1000,时间戳为13位的话不需乘1000
        date = new Date(timestamp * 1000);
    }else if(numLength==13){
        date = new Date(timestamp);
    }
    var Y = date.getFullYear() + '-';
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    var D = date.getDate() + ' ';
    var h = date.getHours() + ':';
    var m = date.getMinutes() + ':';
    var s = date.getSeconds();
    return Y + M + D + h + m + s;
}
timestampToTime(1403058804);
console.log(timestampToTime(1589990400)); //2020-05-21 00:00:00

3. 日期格式转化为时间戳

var date = new Date('2020-05-21 00:00:00');
// 有三种方式获取
 var time1 = date.getTime();
var time2 = date.valueOf();
var time3 = Date.parse(date);
console.log(time1);//1589990400000
console.log(time2);//1589990400000
console.log(time3);//1589990400000

4. 知道(比如,评论的发布时间戳/日期格式) 显示几小时前,几天前,几个月前

function getTs(time) {
    var arr = time.split(/[- :]/),
        _date = new Date(arr[0], arr[1] - 1, arr[2], arr[3], arr[4], arr[5]),
        timeStr = Date.parse(_date)
    return timeStr
}
function handlePublishTimeDesc(post_modified) {
    // 拿到当前时间戳和发布时的时间戳,然后得出时间戳差
    var curTime = new Date();
    var postTime = new Date(post_modified);
    //上面一行代码可以换成以下(兼容性的解决)
    var timeDiff = curTime.getTime() - getTs(post_modified);
    // 单位换算
    var min = 60 * 1000;
    var hour = min * 60;
    var day = hour * 24;
    var week = day * 7;
    var month = week * 4;
    var year = month * 12;
    // 计算发布时间距离当前时间的周、天、时、分
    var exceedyear = Math.floor(timeDiff / year);
    var exceedmonth = Math.floor(timeDiff / month);
    var exceedWeek = Math.floor(timeDiff / week);
    var exceedDay = Math.floor(timeDiff / day);
    var exceedHour = Math.floor(timeDiff / hour);
    var exceedMin = Math.floor(timeDiff / min);
    // 判断
    if (exceedyear < 100 && exceedyear > 0) {
        return exceedyear + '年前';
    } else {
        if (exceedmonth < 12 && exceedmonth > 0) {
            return exceedmonth + '个月前';
        } else {
            if (exceedWeek < 4 && exceedWeek > 0) {
                return exceedWeek + '周前';
            } else {
                if (exceedDay < 7 && exceedDay > 0) {
                    return exceedDay + '天前';
                } else {
                    if (exceedHour < 24 && exceedHour > 0) {
                        return exceedHour + '小时前';
                    } else {
                        return exceedMin + '分钟前';
                    }
                }
            }
        }
    }
}
console.log(handlePublishTimeDesc("2020-03-26 15:33:00"))

4. 知道日期2020-03-26 15:33:00只显示2020-03-26

var timeStr = "2020-03-26 15:33:00";
console.log(timeStr.substring(0,10));
console.log(timeStr.slice(0,10));
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容