资讯专栏INFORMATION COLUMN

js 时间对象的常规操作

ningwang / 1167人阅读

摘要:返回时间的分钟部分。对象中的年份四位数字设置时间对象调时间要设置的日期和时间据时间年月日午夜之间的毫秒数参数可以为负值,用于表示年以前的日期。

获得一个时间对象
var date = new Date();
//Date() 方法如果接受到一个时间戳作为参数,返回该时间戳的对象,否则返回当前时间

获得时间对象的时间戳
var timeStr = parseInt(Date.parse(new Date())); 
或者 
var timeStr = (new Date()).getTime();
通过时间戳 获得 时间对象
var date = new Date(timeStr);
一天的时间戳为:

60分 x 60秒 x 24小时 x 1000毫秒 = 86400 x 1000;

时间对象的一些常用方法

getDate() 获得当日的日期
getDay() 获得星期几
getHours():返回时间的小时部分。
getMinutes():返回时间的分钟部分。
getSeconds():返回时间的秒部分。
getMilliseconds():返回时间的毫秒部分。
getTime():返回自从1970年1月1日午夜以来的毫秒数。

setMonth(): 设置月份。
setDate(): 设置一个月的某一天。
setTime() :以毫秒设置 Date 对象。
setFullYear(year,mouth,day) : Date 对象中的年份(四位数字)

设置时间对象(调时间)
dateObject.setTime(millisec);  

millisec: 要设置的日期和时间据 GMT 时间 1970 年 1 月 1 日午夜之间的毫秒数 ;
参数millisec可以为负值,用于表示1970年以前的日期。此方法没有返回值;主要用于设置时间对象;

设置时间为 3天前 :

 function getDate(int) {
     var date = new Date();
     var timeStr = parseInt(Date.parse(date)) +  86400 * 1000 * int;
     date.setTime(timeStr);//设置时间对象;
     return date;
    //注意写成 return  date.setTime(timeStr) 是错的;会返回 timeStr;
}
var date = getDate(-3);

上面的方法也可以写成这样:

 function getDate(int) {
        var date = new Date();
        var timeStr = parseInt(Date.parse(date)) +  86400 * 1000 * int;
        return new Date(timeStr) // Date() 接受一个时间戳参数,返回设置时间后的时间对象;
    }
 var date = getDate(-3);

还可以写成这样(推荐):

 function getDate(int) {
         var date = new Date();
         date.setDate(date.getDate()+int)
         return date
    }
var date = getDate(-3);

//注意:如果增加5天后进入另外一个月或一年,Date对象会自动处理的。
setFullYear 求 某个月有多少天

通过利用 setFullYear 中 如果day 设置为 0 回返回 上个月的最后一天 ;可以求得任意一个月有多少天

function getDaysNum(year,mouth) {
    var date = new Date();
    date.setFullYear(year,mouth,0);
    var days = date.getDate();
    return days;
}
getDaysNum(2017,2) //28

参考链接 http://www.w3school.com.cn/js...

格式化 时间对象

通常我们看到的时间格式并不是时间对象默认的格式(Mon Dec 25 2017 09:34:24 GMT+0800 (中国标准时间));
而是带中文 或者 横线分隔;因此我们需要写一个 Format 函数;直接看某大神的代码吧;

Date.prototype.Format = function (fmt) { //author: meizz 
    var o = {
        "M+": this.getMonth() + 1, //月份 
        "d+": this.getDate(), //日 
        "h+": this.getHours(), //小时 
        "m+": this.getMinutes(), //分 
        "s+": this.getSeconds(), //秒 
        "q+": Math.floor((this.getMonth() + 3) / 3), //季度 
        "S": this.getMilliseconds() //毫秒 
    };
    if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    //在循环中,通过正则匹配格式,然后替换内容
    for (var k in o) 
    if (new RegExp("(" + k + ")").test(fmt)) fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}


调用: 
var time1 = new Date().Format("yyyy-MM-dd"); //2017-12-26
var time2 = new Date().Format("yyyy-MM-dd HH:mm:ss");  //2017-12-26 09:33:30

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/90433.html

相关文章

  • Leetcode:刷完31道链表题一点总结

    摘要:既然说到地址空间了就顺带说一下上面环形链表这道题的另一种很的解法吧。介绍完常规操作链表的一些基本知识点后,现在回到快慢指针。   前几天第一次在 Segmentfault 发文—JavaScript:十大排序的算法思路和代码实现,发现大家似乎挺喜欢算法的,所以今天再分享一篇前两个星期写的 Leetcode 刷题总结,希望对大家能有所帮助。   本文首发于我的blog 前言   今天终于...

    DevTalking 评论0 收藏0
  • feedparser学习与实战——基于Node.jsFeed解析器

    摘要:因为这里用到了异步编程的事件监听,所有的动作都是异步操作,如果通过上述两个办法取出的值都是。但需要注意,在调用的地方也需要异步编程编码问题在抓取非英文网页时,总会遇到编码问题,中文也不例外。 node-feedparser 这篇文章是我学习node-feedparser的时候所写的,前半部分是翻译了node-feedparser在github上的原文(英语不好,如果翻译有误,还请见谅。...

    Half 评论0 收藏0
  • Vim 哲学(二)

    摘要:为什么要有模式呢以上其实已经讲述了一些原因,但真正的价值还在于接下来要讲到的哲学。鼠标与快捷键的操作治标不治本,它们没能从根本上解决这个问题。 学会用不同的角度去看待和理解这个世界,你收获的永远会比你想象的更多。 上回我分享了如何掌握基础移动的心得体会,而对于很重要的模式却只是一带而过,这其实是有原因的。过去我有过几次教新手 Vim 的经历,按照惯常的方式先告诉他们模式切换,...

    ashe 评论0 收藏0
  • 对类型化数组(Typed Array)与ArrayBuffer理解

    摘要:类型化数组也是中新引入的。用一句话解释类型化数组就是它是操作二进制数据的接口。类型化数组类型化数组的应用二进制数据的接口主要应用于文件,在中涉及文件处理的几乎都可以应用,主要是,,。 类型化数组(Typed Array)也是HTML5中新引入的API。用一句话解释类型化数组就是:它是JS操作二进制数据的接口。 众所周知,直接操作二进制数据可以使程序更为高效, 尽管JS对常规数组做了很多...

    Worktile 评论0 收藏0
  • 多行文本超出后隐藏,超出3行隐藏

    摘要:使用插件可实现多行文本超出后隐藏的功能地址下载后项目引入多行行上代码无标题文档对象遵循常规流。对象脱离常规流,使用,,,等属性以窗口为参考点进行定位,当出现滚动条时,对象不会随着滚动。1. 使用插件 clamp.js 可实现多行文本超出后隐藏的功能 2. git地址https://github.com/josephschmitt/Clamp.js 下载后项目引入clamp.js 3.//多行...

    番茄西红柿 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<