一篇文章,掌握 JavaScript Date(日期时间(1)

本文详细介绍了JavaScript中的Date对象如何处理UTC时间和本地时间,包括获取和设置UTC年、月、日、小时等,以及日期的字符串转换、时区转换和常用日期工具,如日期格式化和时间戳操作。
摘要由CSDN通过智能技术生成

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.getUTCFullYear()); //2021 年

console.log(date1.getUTCMonth()); //6 月 需要+1

console.log(date1.getUTCDate()); //17 日

console.log(date1.getUTCHours()); //1 时 北京为8时区,所以9-8=1

console.log(date1.getUTCMinutes()); //44 分

console.log(date1.getUTCSeconds()); //53 秒

console.log(date1.getUTCMilliseconds()); //0 毫秒

1. getUTCFullYear

根据世界时从 Date 对象返回四位数的年份。

2. getUTCMonth

根据世界时从 Date 对象返回月份 (0 ~ 11)。

3. getUTCDate

根据世界时从 Date 对象返回月中的一天 (1 ~ 31)。

4. getUTCHours

根据世界时返回 Date 对象的小时 (0 ~ 23)。

5. getUTCMinutes

根据世界时返回 Date 对象的分钟 (0 ~ 59)。

6. getUTCSeconds

根据世界时返回 Date 对象的秒钟 (0 ~ 59)。

7. getUTCMilliseconds 毫秒

根据世界时返回 Date 对象的毫秒(0 ~ 999)。

8. getTimezoneOffset 时区差值

返回本地时间与格林威治标准时间 (GMT) 的分钟差。

五、UTC设置相关


相比普通时间设置,在set后面增加了UTC标记。

UTC 时间即为 GMT(格林尼治) 时间。

1. setUTCFullYear

根据世界时设置 Date 对象中的年份(四位数字)。

2. setUTCMonth

根据世界时设置 Date 对象中的月份 (0 ~ 11)。

3. setUTCDate

根据世界时设置 Date 对象中月份的一天 (1 ~ 31)。

4. setUTCHours

根据世界时设置 Date 对象中的小时 (0 ~ 23)。

5. setUTCMinutes

根据世界时设置 Date 对象中的分钟 (0 ~ 59)。

6. setUTCSeconds

根据世界时设置 Date 对象中的秒钟 (0 ~ 59)。

7. setUTCMilliseconds 毫秒

根据世界时设置 Date 对象中的毫秒 (0 ~ 999)。

六、转换相关


1. toString

把 Date 对象转换为字符串。

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.toString()); //Sat Jul 17 2021 09:44:53 GMT+0800 (中国标准时间)

2. toTimeString

把 Date 对象的时间部分转换为字符串。

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.toTimeString()); //09:44:53 GMT+0800 (中国标准时间)

3. toDateString

把 Date 对象的日期部分转换为字符串。

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.toDateString()); //Sat Jul 17 2021

4. toUTCString

根据世界时,把 Date 对象转换为字符串。

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.toUTCString()); //Sat, 17 Jul 2021 01:44:53 GMT

5. toLocaleString

根据本地时间格式,把 Date 对象转换为字符串。

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.toLocaleString()); //2021/7/17 上午9:44:53

//这个方法还是比较实用,可以很容易的读懂时间

6. toLocaleTimeString

根据本地时间格式,把 Date 对象的时间部分转换为字符串。

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.toLocaleTimeString()); //上午9:44:53

7. toLocaleDateString

根据本地时间格式,把 Date 对象的日期部分转换为字符串。

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.toLocaleDateString()); //2021/7/17

七、其他方法


1. valueOf

返回 Date 对象的原始值。

let date1 = new Date(‘2021/07/17 09:44:53’);

console.log(date1.valueOf()); //1626486293000

//可见在JavaScript中日期使用时间戳进行计算的

八、常用日期工具


1. 日期格式化

将Date对象转换为指定的日期格式进行输出。

以下方法主要使用了正则表达式进行处理.

对正则表达式感兴趣可以移步至:八千字带你进入正则表达式的世界, 使用少量的代码完成数据验证/提取/替换等操作

//日期格式化

function getFormatDate(fmt, date) {

let opt = {

“y+”: date.getFullYear().toString(),// 年

“M+”: date.getMonth() + 1,//月份

“d+”: date.getDate(), //日

“h+”: date.getHours(), //小时

“m+”: date.getMinutes(), //分

“s+”: date.getSeconds(), //秒

“q+”: Math.floor((date.getMonth() + 3) / 3), //季度

“S”: date.getMilliseconds() //毫秒

// 有其他格式化字符需求可以继续添加,必须转化成字符串

};

if (/(y+)/.test(fmt))

fmt = fmt.replace(RegExp.$1, (date.getFullYear() + “”).substr(4 - RegExp.$1.length));

for (var k in opt)

if (new RegExp(“(” + k + “)”).test(fmt))

fmt = fmt.replace(RegExp.$1, (RegExp.$1.length == 1) ? (opt[k]) : ((“00” + opt[k]).substr((“” + opt[k]).length)));

return fmt;

}

示例

var crtTime = new Date(‘2021/07/17 09:44:53’);

console.log(getFormatDate(“yyyy-MM-dd hh:mm:ss:S”, crtTime));// 2021-07-17 09:44:53:0

2. 获取指定时区的时间

//获取指定时区的时间戳;因为目前还无法直接修改date对象的时区,所以使用时间戳方式返回

function getZoneTime(date, zone) {

var offset_GMT = date.getTimezoneOffset();

var current = date.getTime();

var targetDate = new Date(current + offset_GMT * 60 * 1000 + zone * 60 * 60 * 1000);

return targetDate.getTime();

}

示例

//已知北京(东八区),东京(东九区);两地时差1小时

var bjdate = new Date(‘2021/07/17 09:44:53’);

var djdate = new Date(getZoneTime(bjdate,9));

console.log(‘中国北京时间:’+getFormatDate(“yyyy-MM-dd hh:mm:ss:S”, bjdate)); // 中国北京时间:2021-07-17 09:44:53:0

console.log(‘日本东京时间:’+getFormatDate(“yyyy-MM-dd hh:mm:ss:S”, djdate)); // 日本东京时间:2021-07-17 10:44:53:0

3. 字符串时间戳互转

//时间戳转字符串

function getTimeToString(timestamp) {

return new Date(timestamp).toLocaleString();

}

//字符串转时间戳

function getStringToTime(datestr) {

return new Date(datestr.replace(/-/g, ‘/’)).getTime();

}

示例

console.log(‘时间戳转字符串:’ + getTimeToString(1626486293000)); // 时间戳转字符串:2021/7/17 上午9:44:53

console.log(‘字符串转时间戳:’ + getStringToTime(‘2021/07/17 09:44:53’)); // 字符串转时间戳:1626486293000

九、注意事项


小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级前端工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Web前端开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注:前端)
img

HTTP

  • HTTP 报文结构是怎样的?

  • HTTP有哪些请求方法?

  • GET 和 POST 有什么区别?

  • 如何理解 URI?

  • 如何理解 HTTP 状态码?

  • 简要概括一下 HTTP 的特点?HTTP 有哪些缺点?

  • 对 Accept 系列字段了解多少?

  • 对于定长和不定长的数据,HTTP 是怎么传输的?

  • HTTP 如何处理大文件的传输?

  • HTTP 中如何处理表单数据的提交?

  • HTTP1.1 如何解决 HTTP 的队头阻塞问题?

  • 对 Cookie 了解多少?

  • 如何理解 HTTP 代理?

  • 如何理解 HTTP 缓存及缓存代理?

  • 为什么产生代理缓存?

  • 源服务器的缓存控制

  • 客户端的缓存控制

  • 什么是跨域?浏览器如何拦截响应?如何解决?

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】


请求方法?

  • GET 和 POST 有什么区别?

  • 如何理解 URI?

  • 如何理解 HTTP 状态码?

  • 简要概括一下 HTTP 的特点?HTTP 有哪些缺点?

  • 对 Accept 系列字段了解多少?

  • 对于定长和不定长的数据,HTTP 是怎么传输的?

  • HTTP 如何处理大文件的传输?

  • HTTP 中如何处理表单数据的提交?

  • HTTP1.1 如何解决 HTTP 的队头阻塞问题?

  • 对 Cookie 了解多少?

  • 如何理解 HTTP 代理?

  • 如何理解 HTTP 缓存及缓存代理?

  • 为什么产生代理缓存?

  • 源服务器的缓存控制

  • 客户端的缓存控制

  • 什么是跨域?浏览器如何拦截响应?如何解决?

    开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】

  • 21
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值