关于javascript:Javascript-时间与时间戳处理相关

42次阅读

共计 3325 个字符,预计需要花费 9 分钟才能阅读完成。

var myDate = new Date();
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(); // 获取以后日期
myDate.toLocaleTimeString(); // 获取以后工夫
myDate.toLocaleString(); // 获取日期与工夫

获取以后 13 位工夫戳的办法

// 第一种办法
var timestamp =Date.parse(new Date());
//1280977330000 留神:这里失去的后果将后三位(毫秒)转换成了 000 显示,应用时可能会呈现问题

// 第二种办法
var timestamp =(new Date()).valueOf();
// 后果:1280977330748

// 第三种办法
var timestamp=new Date().getTime();// 后果:1280977330748

获取以后 10 位工夫戳

// 办法一
Math.round(new Date().getTime()/1000).toString();

// 办法二
Date.parse(new Date() ).toString().substr(0,10);// 

// 办法三
(new Date()).valueOf().toString().substr(0,10);

JS Date 对象罕用的带参数初始化形式:

//1、用整数初始化日期对象 
var date1 = new Date(2017,06,06); console.log(date1); // Thu Jul 06 2017 00:00:00 GMT+0800 (中国规范工夫) 
var date1 = new Date(2017,1,1); console.log(date1); // Wed Feb 01 2017 00:00:00 GMT+0800 (中国规范工夫) 
var date1 = new Date(2017,01-2,01); console.log(date1); // Thu Dec 01 2016 00:00:00 GMT+0800 (中国规范工夫) 
var date1 =new Date(2017,06,06,06,06,06); console.log(date1); // Thu Jul 06 2017 06:06:06 GMT+0800 (中国规范工夫) 
// 阐明:new Date(year, month, date, hrs, min, sec) 按给定的参数创立一日期对象


//2、用字符串初始化日期对象 
var date2 = new Date(“2017/06/06”); console.log(date2); // Tue Jun 06 2017 00:00:00 GMT+0800 (中国规范工夫) 
var date2 = new Date(“2017-08-08”); console.log(date2); // Tue Aug 08 2017 08:00:00 GMT+0800 (中国规范工夫) 
var date2 = new Date(“2017-9-9”); console.log(date2); // Sat Sep 09 2017 00:00:00 GMT+0800 (中国规范工夫) 
// 阐明:如果字符串模式不反对短横杠模式,则进行字符串替换:var strTime=”2011-04-16”; 
var date2= new Date(Date.parse(strTime.replace(/-/g,“/”))); // /-/ g 为正则表达式(RegExp)对象,示意全局替换 - 为 /。//3、用毫秒工夫戳初始化日期对象 
var timestamp=new Date().getTime(); console.log(new Date(timestamp) ); //Tue Jun 06 2017 11:06:59 GMT+0800 (中国规范工夫) 
var date3 = new Date(timestamp - 1 * 60 * 60 * 1000); console.log(date3); // Tue Jun 06 2017 10:06:59 GMT+0800 (中国规范工夫) 
// 阐明:工夫戳是指格林威治工夫 1970 年 01 月 01 日 00 时 00 分 00 秒 (北京工夫 1970 年 01 月 01 日 08 时 00 分 00 秒) 起至当初的总秒数。工夫戳惟一地标识某一刻的工夫。

留神:间接获取以后工夫的对应月份需 +1,然而如果是以传参的形式生成工夫对象,返回的月份须要做辨别

// 假如以后工夫为:2021/05/27 20:41:00,则:new Date().getMonth()
// 4,所以在应用的时候须要 +1


// 当以参数模式传入
new Date(2021,05,27).getMonth()
// 5
// 当以参数模式传入
new Date('2021/05/27').getMonth()
// 4

js 中独自调用 new Date(),例如 document.write(new Date());

显示的后果是:Mar 31 10:10:43 UTC+0800 2012 这种格局的工夫

然而用 new Date() 参加计算会主动转换为从 1970.1.1 开始的毫秒数。


思考:依据以后工夫,查找上周六以及本周五的具体工夫?

const getLastWeek6 = date => {const data = new Date(date)
    const LastWeek6 = data.getTime() - (1 + data.getDay()) * 24 * 60 * 60 * 1000
    return new Date(LastWeek6)
}

const getThisWeek5 = (date) => {const data = new Date(date)
    const ThisWeek5 = data.getTime() + (5-data.getDay()) * 24 * 60 * 60 * 1000
    return new Date(ThisWeek5)
}
// test
getThisWeek5('2020-08-27') 
// Sat Aug 22 2020 08:00:00 GMT+0800 (中国规范工夫)
// 如果要转换成相似 1991-08-21 的格局:则:getLastWeek6('2020-08-27').getFullYear() + '-' + parseInt(getLastWeek6('2020-08-27').getMonth()+1) + '-' + getLastWeek6('2020-08-27').getDate()
getLastWeek6('2020-08-28')

UTC 工夫解决:

export const UTCDateToFullLocalDate = (dateStr) => {let localDate = new Date();
  let offsetMinute = localDate.getTimezoneOffset();
  let offsetHours = offsetMinute / 60;
  let UTCdate = new Date(dateStr);
  UTCdate.setHours(UTCdate.getHours() - offsetHours);
  let d = new Date(UTCdate);
  let datetime = d.getFullYear() + '/' + (d.getMonth() + 1) + '/' + d.getDate() + '' + d.getHours() +':'+ d.getMinutes() +':' + d.getSeconds();
  return datetime
}

正文完
 0