15

前言

做项目其实经常需要与时间接触。时间戳与时间的转换问题,在这做一个记录。

1.获取特定格式的时间

myDate.getYear(); //获取当前年份(2位)
myDate.getFullYear(); //获取完整的年份(4位,1970-????)
myDate.getMonth(); //获取当前月份(0-11,0代表1月)
myDate.getDate(); //获取当前日(1-31)
myDate.getDay(); //获取当前星期X(0-6,0代表星期天)
myDate.getTime(); //获取当前时间(从1970.1.1开始的毫秒数)
myDate.getHours(); //获取当前小时数(0-23)
myDate.getMinutes(); //获取当前分钟数(0-59)
myDate.getSeconds(); //获取当前秒数(0-59)
myDate.getMilliseconds(); //获取当前毫秒数(0-999)
myDate.toLocaleDateString(); //获取当前日期
var mytime=myDate.toLocaleTimeString(); //获取当前时间
myDate.toLocaleString( ); //获取日期与时间

2.获取当前时间的时间戳(13位)

 //第一种方法(精确到秒)
 var timestamp = Date.parse(new Date());

 //第二种方法(精确到毫秒)
 var timestamp = (new Date()).valueOf();

 //第三种方法(精确到毫秒)
 var timestamp=new Date().getTime();

3.时间戳转指定日期格式

  //第一种
  function getLocalTime(nS) {
    return new Date(parseInt(nS)).toLocaleString().replace(/:\d{1,2}$/, ' ');
  }
  var nowTime = getLocalTime(timestamp);  //  2018/10/15 下午9:45

  //第二种
  function getLocalTime1(nS) {
    return new Date(parseInt(nS)).toLocaleString().substr(0, 17)
  }
  var nowTime = getLocalTime1(timestamp); // 2018/10/15 下午9:53

  //第三种
   function getLocalTime2(nS) {
    return new Date(parseInt(nS)).toLocaleString().replace(/年|月/g, "-").replace(/日/g, " ");
  }
  let nowTime1 = getLocalTime2(timestamp); //    2018/10/15 下午9:53:10

还有一种较为繁琐的

function getFormatData(getData) {
  let date = new Date(parseInt(getData));
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

let DateTime = getFormatData(timestamp);        //2018-10-17 15:31:30

4.获取今天0点的时间戳

toLocaleDateString() 方法可根据本地时间把 Date 对象的日期部分转换为字符串,并返回结果。(就是返回“2018/10/17”这样的字符串)

let getZeroTimestamp = new Date(new Date().toLocaleDateString()).getTime();
//注:toLocaleDateString得到的日期字符串最好别用来做时间格式的处理(就是别直接拿这个字符串做一些替换之类的操作),因为我在别人的文章看到,在不同浏览器或者不同版本下。返回的样式不一样,可能会有“2018-10-17”这种格式。我自己试了最新版的Google,Firefox,Safari返回的是一样的“2018/10/17”。

暂时就想起来那么多,以后用到新的会继续增加的。最后,附上,w3c上Date()对象的链接


小学生
495 声望4 粉丝

路漫漫其修远兮,吾将上下而求索。