首页 > 其他分享 >10位时间戳、13位时间戳以及17位时间戳在JS中的格式转换

10位时间戳、13位时间戳以及17位时间戳在JS中的格式转换

时间:2024-12-11 18:22:42浏览次数:10  
标签:10 13 17 00 let 时间

目录

目录

一、介绍

1、10位时间戳

10位时间戳通常指的是Unix时间戳的一种表示形式,它表示从1970年1月1日00:00:00 UTC(协调世界时)到某个特定时间点的秒数。与常见的13位时间戳(毫秒级时间戳)不同,10位时间戳只精确到秒。
10位时间戳是一种常见的时间表示方式,因其简单、易用、兼容性好,在软件开发和网络应用中被广泛使用。

2、13位时间戳

‌13位时间戳是指自1970年1月1日00:00:00 UTC(协调世界时)以来的总毫秒数‌。这种时间戳以毫秒为单位进行表示,提供了比10位时间戳(以秒为单位)更高的时间精度,因此在需要高精度时间记录和分析的场景中尤为有用‌。13位时间戳在软件开发、网络应用、数据库记录等多个领域都有广泛应用,如记录事件发生时间、版本控制、日志记录等‌。

3、17位时间戳

17位时间戳表示的是自‌1601年1月1日00:00:00 GMT(格林威治时间)‌以来的总微秒数‌。这种时间戳提供了极高的时间精度,能够精确到微秒级别。
‌应用场景‌:尽管17位时间戳并不常见,但在某些特定领域,如Chrome、Edge、Firefox等浏览器的本地数据库文件中,有关时间的字段可能会采用这种时间戳格式来记录精确的时间信息‌。
‌ 与常见时间戳的区别‌:与10位和13位时间戳相比,17位时间戳提供了更高的时间精度。10位时间戳表示的是自1970年1月1日以来的总秒数,而13位时间戳则表示的是自同一时间点以来的总毫秒数。相比之下,17位时间戳能够更精确地反映时间的变化‌。

二、13位时间戳的转换

1、获取当前时间的13位时间戳

13位时间戳表示自1970年1月1日00:00:00的总毫秒数;
下面是在JavaScript中,获取当前时间的13位时间戳(以毫秒为单位)的方法

// 创建一个新的Date对象,表示当前时间
var now = new Date();

// 使用getTime()方法获取13位时间戳
var timestamp = now.getTime();

// 输出时间戳(返回自1970年1月1日00:00:00 UTC以来的毫秒数)
console.log(timestamp);

2、转换成标准日期

使用JavaScript中的Date对象,可以将13位的时间戳转换为标准日期;
只需在创建Date对象时传入需要转换的13位时间戳即可;

//以1733910420147时间戳为例
new Date(1733910420147)

3、转换成格式化日期

使用该方法可以将13位的时间戳转换成 yyyy-MM-dd HH:mm:ss 格式的日期字符串;

// 13位时间戳的格式化,以1733910420147为例
console.log("格式化13位时间戳1733910420147:", formatTimeStamp(1733910420147));

function formatTimeStamp(timeStamp) {
    let date = new Date(timeStamp);
    let year = date.getFullYear();
    let month = date.getMonth() + 1;
    let day = date.getDate();
    let hour = date.getHours();
    let minute = date.getMinutes();
    let second = date.getSeconds();
 
    month = month < 10 ? "0" + month : month;
    day = day < 10 ? "0" + day : day;
    hour = hour < 10 ? "0" + hour : hour;
    minute = minute < 10 ? "0" + minute : minute;
    second = second < 10 ? "0" + second : second;
 
    return `${year}-${month}-${day} ${hour}:${minute}:${second}`;;
}

三、10位时间戳的转换

1、获取当前时间的10位时间戳

在JavaScript中,获取当前时间的10位时间戳(以秒为单位)需要将毫秒数转换为秒数。你可以使用Math.floor()函数来对毫秒数进行整除,从而得到秒数。以下是一个示例代码:

// 获取当前时间的毫秒数(13位时间戳)
var milliseconds = Date.now();

// 将毫秒数转换为秒数(10位时间戳)
var timestampInSeconds = Math.floor(milliseconds / 1000);

// 输出10位时间戳
console.log(timestampInSeconds);

2、转换成标准日期

10位时间戳表示自1970年1月1日00:00:00的总秒数;
只需给10位时间戳 * 1000 转成13位时间戳,其他按照13位时间戳的处理方式就可以了;

// 以 1733911274时间戳为例
new Date(1733911274* 1000);

3、转换成格式化日期

注意:这里使用的是上面13位时间戳的转换方法,只需注意传入的参数即可;

// 13位时间戳的格式化,以1733910420147为例
console.log("格式化13位时间戳1733910420147:", formatTimeStamp(1733910420147));
 
// 10位时间戳的格式化,以1733911274为例
console.log("格式化10位时间戳1733911274:", formatTimeStamp(1733911274* 1000));

四、17位时间戳的转换

17位的时间戳在解析上比较麻烦,JavaScript中的Date对象只能用来处理13位的时间戳,所以需要先将17位时间戳的换成13位时间戳的表示规则,再进行解析,这里不做详解

完整代码(代码来源

// 13363929430000000   1719455830   2024年6月27日星期四上午10点37分 GMT+08:00
 
// 格式化17位时间戳13363929430000000: 2024-06-27 10:31:27
console.log("格式化17位时间戳13363929430000000:", format17TimeStamp(13363929430000000));    
 
function format17TimeStamp(timeStamp){
    let epoch_start = new Date("1601-1-1 00:00:00:000");    
    console.log(epoch_start.getTime());   // "1601-1-1 00:00:00"的毫秒数:-11644502743000
 
    let epoch_end = new Date("1970-1-1 00:00:00:000");      
    console.log(epoch_end.getTime());   // "1970-1-1 00:00:00"的毫秒数:-28800000
 
    let epoch = (epoch_end.getTime() - epoch_start.getTime());      
    console.log(epoch);      // 相差epoch: 11644473943000 毫秒
 
    let timeStamp14 = Math.floor(timeStamp / 1000);     // timeStamp14: 13363929430000
    console.log("timeStamp14:", timeStamp14);
 
    let ms = timeStamp14 - epoch;   // ms: 1719455487000
    console.log("ms:", ms);
    
    let date = new Date(ms);        // date: Thu Jun 27 2024 10:31:27 GMT+0800 (中国标准时间)
    console.log("date:", date);
 
    return formatTimeStamp(date);   // 2024-06-27 10:31:27
}

标签:10,13,17,00,let,时间
From: https://www.cnblogs.com/Anyating-bk/p/18600392

相关文章

  • WiFi+4G摄像头拍照图传模块(夜视2K高清1080P)-固件打包和程序批量烧录
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/product/audioCamera.html"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p> 说明1,点......
  • NRF52810超低功耗SOC蓝牙芯片支持ANT和2.4 GHz私有协议NRF52832低成本方案64Marm
    nRF52810系统级芯片(SoC)是nRF52系列的基准成员,是NRF52832的低成本方案。它满足了将高级低功耗蓝牙功能和协议并发性引入应用的挑战,其价位使得向应用添加低功耗蓝牙连接极具吸引力。它是不太复杂的应用的理想选择,也是大型应用中的低功耗蓝牙连接处理器的理想选择。nRF52810支......
  • AI 口语学习应用 Speak 新一轮融资估值 10 亿美元;YouTube 推出 AI 多语言配音丨 RTE
       开发者朋友们大家好: 这里是「RTE开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享RTE(Real-TimeEngagement)领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「有看点的会议」,但内容仅代表编......
  • hhdb客户端介绍(10)
    总体架构模块架构设计按照之前设计思路和设计原则,对整个软件的架构设计如下图:整个程序以MainGuide为程序入口,展示程序的View模块;以SQLTableKey为主,相关联的Key类为辅是程序的Model模块;以MainSQLController为主,相关连的Controller为辅是程序的Control模块;其中Model和Control......
  • hhdb客户端介绍(13)
    引言编写目的本部署清单的编写目的为:(1)从软件部署角度说明软件运行的硬件环境以及软件系统。(2)使使用者了解系统的部署模块组成。参考资料《数据库管理软件开发部署内容清单》术语、界说和缩语平台:专指数据库管理软件软件部署软件环境操作系统:Ubuntu18.04操作系统......
  • 12.10 CW 模拟赛 T2. 乘法
    算法剪枝怎么都过不去\(50\%\),红温了不管了容易想到的是,枚举最终\(B\)进制数的位数,然后进行一个搜索来确定答案这样不够优秀,考虑折半搜索,我们将\(B\)进制数分为两个部分,然后分别判断两个部分对\(n\)取余的值,若可以,考虑归并具体怎么操作呢?对于左......
  • 如何利用甘特图进行项目时间管理?5个技巧轻松上手
    甘特图是一种常用的项目管理工具,能够帮助你可视化项目的时间线、任务进度和资源分配,进而有效地进行时间管理。通过合理的使用甘特图,你可以更清晰地掌握项目的进展,识别潜在的瓶颈,并确保项目按时完成。下面是5个技巧,帮助你轻松上手利用甘特图进行项目时间管理:1.定义项目的关键任......
  • 1308: PG010 完数
    题目描述例如,28的因子为1、2、4、7,14,而28=1+2+4+7+14。因此28是“完数”。编程判断完数。输入输入有多行,每行一个正整数。输出对于每行的正整数判断是否是完数,是则输出:Yes,否则输出:No。样例输入 复制228样例输出 复制NoYesAC代码:#include<stdio.h>intmain(){......
  • 10个案例详解AnimatableExtend装饰器定义可动画属性
    Hello,大家好,我是V哥。HarmonyOS开发中,使用@AnimatableExtend装饰器来定义可动画属性是个很好玩的事情,废话不多说,马上进入主题,先来看一下基本语法,接着V哥提供10个好玩的案例供你参考。@AnimatableExtend装饰器的使用说明@AnimatableExtend装饰器用于自定义可动画的属性方法,允......
  • 全球10大CTF战队,看看你认识几个呢?
    前言世界10大CTF战队,看看你认识几个呢?一、PPP战队美国超神明星战队,队内两位大神,Geohot神奇小子和Ricky,代表着国际最高水准。2014年PPP包揽了GitS和CodeGate冠军,2015年问鼎CTFTIME全球第一。二、Blue-Lotus来自中国的蓝莲花战队。2013年成为华人首个入围DEFCONCTF总......