JS时间戳与日期格式互相转换的简单方法示例

JS和jQuery用了一段时间,最近发现他们没有自带的时间戳格式化函数,于是综合网上相关的时间戳格式化函数,自己写了一个时间戳格式化函数DateToTime,这个函数提供了多种格式化样式:

Y-m-d,Y-m-d H:i:s,Y/m/d,Y/m/d H:i:s,Y年m月d日,Y年m月d日 H:i:s

这里的时间有时仅输入Y-m-d H:i也是可以使用的

/**
 * [TimeToDate时间戳转换为日期]
 * @param {[type]} unixTime [时间戳]
 * @param {String} type     [Y-m-d,Y-m-d H:i:s,Y/m/d,Y/m/d H:i:s,Y年m月d日,Y年m月d日 H:i:s]
 */
function TimeToDate(unixTime,type="Y-M-D H:i:s"){
    var date = new Date(unixTime * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
    var datetime = "";
    datetime += date.getFullYear() + type.substring(1,2);
    datetime += (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1) : date.getMonth()+1) + type.substring(3,4);
    datetime += (date.getDate() < 10 ? '0'+(date.getDate()) : date.getDate());
    if (type.substring(5,6)) {
        if (type.substring(5,6).charCodeAt() > 255) {
            datetime += type.substring(5,6);
            if (type.substring(7,8)) {
                datetime += " " + (date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours());
                if (type.substring(9,10)) {
                    datetime += type.substring(8,9) + (date.getMinutes() < 10 ? '0'+(date.getMinutes()) : date.getMinutes());
                    if (type.substring(11,12)) {
                        datetime += type.substring(10,11) + (date.getSeconds() < 10 ? '0'+(date.getSeconds()) : date.getSeconds());
                    };
                };
            };
        }else{
            datetime += " " + (date.getHours() < 10 ? '0'+(date.getHours()) : date.getHours());
            if (type.substring(8,9)) {
                datetime += type.substring(7,8) + (date.getMinutes() < 10 ? '0'+(date.getMinutes()) : date.getMinutes());
                if (type.substring(10,11)) {
                    datetime += type.substring(9,10) + (date.getSeconds() < 10 ? '0'+(date.getSeconds()) : date.getSeconds());
                };
            };
        };
    };
    return datetime;
}
TimeToDate("1515640111");    //2018-01-11 11:08:31
TimeToDate("1515640111","Y-m-d");    //2018-01-11
TimeToDate("1515640111","Y-m-d H:i");    //2018-01-11 11:08
TimeToDate("1515640111","Y-m-d H:i:s");    //2018-01-11 11:08:31
TimeToDate("1515640111","Y/m/d");    //2018/01/11
TimeToDate("1515640111","Y/m/d H:i:s");    //2018/01/11 11:08:31
TimeToDate("1515640111","Y年m月d日");    //2018年01月11日
TimeToDate("1515640111","Y年m月d日 H:i:s");    //2018年01月11日 11:08:31
/**
 * [DateToTime 日期转换时间戳]
 * @param {[type]} day [日期格式,仅支持标准格式]
 */
function DateToTime(day){
	// re = /(\d{4})(?:-(\d{1,2})(?:-(\d{1,2}))?)?(?:\s+(\d{1,2}):(\d{1,2}):(\d{1,2}))?/.exec(day); // 原
	re = /(\d{4})(?:\D?(\d{1,2})(?:\D?(\d{1,2}))?[^\d\s]?)?(?:\s+(\d{1,2})\D?(\d{1,2})\D?(\d{1,2}))?/.exec(day);
	return new Date(re[1],(re[2]||1)-1,re[3]||1,re[4]||0,re[5]||0,re[6]||0).getTime()/1000;
}
DateToTime("2018-01-11 11:08:31");
DateToTime("2018-01-11");
DateToTime("2018年01月11日 11时08分31秒");
DateToTime("2018");

补充时间戳与日期相互转换:

function TimeToDate(date,format) {
  format = format || 'YYYY-MM-DD hh:mm:ss';
  var dateTest = (/^(-)?\d{1,10}$/.test(date) || /^(-)?\d{1,13}$/.test(date));
  if(/^[1-9]*[1-9][0-9]*$/.test(date) && dateTest){
    var vdate = parseInt(date);
    if (/^(-)?\d{1,10}$/.test(vdate)) {
      vdate = vdate * 1000;
    } else if (/^(-)?\d{1,13}$/.test(vdate)) {
      vdate = vdate * 1000;
    } else if (/^(-)?\d{1,14}$/.test(vdate)) {
      vdate = vdate * 100;
    } else {
      alert("时间戳格式不正确");
      return;
    }
    var setdate = new Date(vdate);
    return parse({YYYY:setdate.getFullYear(), MM:digit(setdate.getMonth()+1), DD:digit(setdate.getDate()) , hh:digit(setdate.getHours()), mm:digit(setdate.getMinutes()), ss:digit(setdate.getSeconds()) }, format);
  }else {
    //将日期转换成时间戳
    var arrs = date.match(/\w+|d+/g),
      newdate = new Date(arrs[0],parseInt(arrs[1])-1,arrs[2],arrs[3]||0,arrs[4]||0,arrs[5]||0),
      timeStr = Math.round(newdate.getTime() / 1000);
    return timeStr;
  }

  function parse(ymdhms, format) {
    var regymdzz = "YYYY|MM|DD|hh|mm|ss|zz";
    return format.replace(new RegExp(regymdzz,"g"), function(str, index) {
      return str == "zz" ? "00":digit(ymdhms[str]);
    });
  };
  function digit(num) {
    return num < 10 ? "0" + (num | 0) :num;
  };
};

总结

到此这篇关于JS时间戳与日期格式互相转换的文章就介绍到这了,更多相关JS时间戳与日期格式互相转换内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • javascript中日期转换成时间戳的小例子

    复制代码 代码如下: /*** 日期转化成时间戳* 日期格式 2011-02-02 21:12:13* time_str:日期段 2011-02-02* fix_time:时间段 21:12:13*/function strtotime(time_str, fix_time) {var time = (new Date()).getTime(); if(time_str) {//有日期段var str = time_str.split('-');if (3 === str.length) {va

  • JavaScript时间戳与时间日期间相互转换

    今天在工作中要将获取到的时间转换为时间戳,一时间竟不知道怎么用,于是不得不去查询资料,这里特地做个笔记. 1.将日期转换为时间戳. 要将日期转换为时间戳,首先得先获取到日期,这里可以直接指定日期,或者是使用当前日期.要获取当前日期,我们可以使用new Date()来获取.直接上代码. // (1).将当前日期转换为时间戳. var now = new Date(); console.log(now.getTime()) // 将当前日期转换为时间戳,getTime()方法可返回距1970年1月1

  • javascript日期转换 时间戳转日期格式

    复制代码 代码如下: Date.prototype.format = function(format) { var o = { "M+" : this.getMonth()+1, //month "d+" : this.getDate(), //day "h+" : this.getHours(), //hour "m+" : this.getMinutes(), //minute "s+" : this.

  • 把时间戳转换为日期格式的js代码

    复制代码 代码如下: <script>     function getLocalTime(nS) {        return new Date(parseInt(nS) * 1000).toLocaleString().replace(/:\d{1,2}$/,' ');     }     alert(getLocalTime(1293072805));     </script> 结果是2010年12月23日 10:53第二种 复制代码 代码如下: <script&g

  • js时间戳与日期格式之间相互转换

    本文实例为大家分享了js时间戳与日期格式之间相互转换的代码,供大家参考,具体内容如下 1. 将时间戳转换成日期格式 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己拼接起来就好了 2. 更多好用的方法可以在这查到 -> http://www.w3school.com.cn/jsref/jsref_obj_date.asp */ date.getFullYear(); // 获取完整的年份(

  • js时间戳转为日期格式的方法

    什么是Unix时间戳(Unix timestamp): Unix时间戳(Unix timestamp),或称Unix时间(Unix time).POSIX时间(POSIX time),是一种时间表示方式,定义为从格林威治时间1970年01月01日00时00分00秒起至现在的总秒数.Unix时间戳不仅被使用在Unix系统.类Unix系统中,也在许多其他操作系统中被广泛采用. 目前相当一部分操作系统使用32位二进制数字表示时间.此类系统的Unix时间戳最多可以使用到格林威治时间2038年01月19日

  • javascript时间戳和日期字符串相互转换代码(超简单)

    javascript时间戳和日期字符串相互转换代码(超简单) <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script type="text/javascript"> // 获取当前

  • js时间戳与日期格式之间转换详解

    本文实例为大家分享了Android九宫格图片展示的具体代码,供大家参考,具体内容如下 将时间戳转换为日期格式 var date = new Date(时间戳);获取一个时间对象. 下面是获取时间日期的方法 下面是获取时间日期的方法. date.getFullYear();//获取完整的年份(4位,1970) date.getMonth();//获取月份(0-11,0代表1月,用的时候记得加上1) date.getDate();//获取日(1-31) date.getTime();//获取时间(从

  • JavaScript日期时间与时间戳的转换函数分享

    如果只是将当前时间转成时间戳,可以直接使用new Date().getTime()/1000:但如果是将某个具体时间或日期转成Unix时间戳,ie不支持像new Date("2013-1-1")  这样带参数的方法,将返回NaN. 对此,我写了以下函数,支持ie6+,谷歌,火狐等浏览器: 复制代码 代码如下: function getTime(day){  re = /(\d{4})(?:-(\d{1,2})(?:-(\d{1,2}))?)?(?:\s+(\d{1,2}):(\d{1,

  • JS获取时间的相关函数及时间戳与时间日期之间的转换

    时间戳和时间日期的转换是常见的操作,下面就通过代码实例介绍一下如何实现它们之间的相互转换. 在没学习本文之前先给大家介绍下javascript中Date()构造函数参数: 关于Date对象大家想必一定不陌生,使用Date()构造函数创建一个时间对象是最基本的操作了,例如: var theDate=new Date(); theDate.getDate(); 使用以上代码可以获取当前日期的天. 上面是对于Date()构造函数最简单的应用了,Date对象具有多种构造函数,下面简单列举如下: new

随机推荐