js 时间戳转换,全网最牛业务逻辑解析,逐行解析代码,千万不要错过,里面有些错误场景你可能还不知道

news2024/10/3 8:24:59

 一、注意事项

1、js只识别13位的时间戳

2、10位的是unix时间戳

 

二、小试牛刀--日期类型转换成时间戳

可先将js字符串转换为date类型,再转换为时间戳类型。
字符串格式为 yyyy-MM-dd HH:mm:ss或者yyyy-MM-dd

//把字符串转换成时间格式
let date = new Date('2023-11-12 13:14:15:16');

// 精确到毫秒
let time1 = date.getTime();

// 精确到毫秒
let time2 = date.valueOf();

// 精确到秒
let time3 = Date.parse(date);
console.log(time1)
console.log(time2)
console.log(time3)

// 输出结果
// 1699766055016
// 1699766055016
// 1699766055000
console.log('time1=='+time1,'长度:'+time1.toString().length)
console.log('time2=='+time2,'长度:'+time2.toString().length)
console.log('time3=='+time3,'长度:'+time3.toString().length)

// 输出结果
time1==1699766055016 长度:13
time2==1699766055016 长度:13
time3==1699766055000 长度:13

time1、time2:会精确到毫秒,
time3:只能精确到秒,毫秒用000替代,

----------
注意:获取到的时间戳除以1000就可获得Unix时间戳,再传值给后台。

----------

 

三、时间方法

Date() 返回当日的日期和时间。 

getDate() 从 Date 对象返回一个月中的某一天 (1 ~ 31)。 

getDay() 从 Date 对象返回一周中的某一天 (0 ~ 6)。 

getMonth() 从 Date 对象返回月份 (0 ~ 11)。 

getFullYear() 从 Date 对象以四位数字返回年份。 

getYear() 请使用 getFullYear() 方法代替。 

getHours() 返回 Date 对象的小时 (0 ~ 23)。 

getMinutes() 返回 Date 对象的分钟 (0 ~ 59)。 

getSeconds() 返回 Date 对象的秒数 (0 ~ 59)。 

getMilliseconds() 返回 Date 对象的毫秒(0 ~ 999)。 

getTime() 返回 1970 年 1 月 1 日至今的毫秒数。 

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

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

getUTCDay() 根据世界时从 Date 对象返回周中的一天 (0 ~ 6)。 

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

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

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

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

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

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

parse() 返回1970年1月1日午夜到指定日期(字符串)的毫秒数。 

setDate() 设置 Date 对象中月的某一天 (1 ~ 31)。 

setMonth() 设置 Date 对象中月份 (0 ~ 11)。 

setFullYear() 设置 Date 对象中的年份(四位数字)。 

setYear() 请使用 setFullYear() 方法代替。 

setHours() 设置 Date 对象中的小时 (0 ~ 23)。 

setMinutes() 设置 Date 对象中的分钟 (0 ~ 59)。 

setSeconds() 设置 Date 对象中的秒钟 (0 ~ 59)。 

setMilliseconds() 设置 Date 对象中的毫秒 (0 ~ 999)。 

setTime() 以毫秒设置 Date 对象。 

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

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

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

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

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

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

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

toSource() 返回该对象的源代码。 

toString() 把 Date 对象转换为字符串。 

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

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

toGMTString() 请使用 toUTCString() 方法代替。 

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

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

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

UTC() 根据世界时返回 1997 年 1 月 1 日 到指定日期的毫秒数。valueOf() 返回 Date 对象的原始值。

四、时间在安卓、苹果、IE浏览器上的差异化,或你可能遇到一些奇葩的时间格式

第一种:2022:08:16 12:00:00

第二种:2022-08-16 12:00:00

第三种:2020-10-27T14:36:23

1.这个很明显,第一种不是 理想时间格式,我们需要转换下

var time = '2022:08:16 12:00:00';

new Date(time);//会报错

var timeArray=time.split(' ');//分割

var _time1=timeArray[0];//只赋值日期部分

_time1=_time1.replace(/:/g,'/');//把:替换成/

time=_time1+' '+timeArray[1];//连接成可解析的时间格式

new Date(time);//不报错

运行结果 

 

2.在某些情况下,或者说某些浏览器里不识别带-分隔符的日期格式,我们同样需要转换,我记得IE是不识别带-分隔符的日期格式

var time = '2022-08-16 12:00:00';
  
time=time.replace(/-/g,'/');//把-替换成/
  
new Date(time);//不报错

运行结果 

 五、时间戳转换核心方法

调用时如果传空则是当前日期 

/**
 * 时间戳转换
 * */
function DateTimeConvert(time, type) {
	var d= new Date(); 
	if(time==''||time=='null'||time==undefined)
	{
		d= new Date();
	} 
	else if(time.toString().length==10) 
	{//js只识别13位的时间戳,一般情况下后端的时间戳是10位的
		 time = Number(time)*1000;
		 d= new Date(time); 
	}
	else if(time.toString().length==13)
	{
		time = Number(time);
		d= new Date(time); 
	}
	else
	{
		console.error('时间戳格式错误');
		return false;
	}
    
    var year = d.getFullYear();
    var month = d.getMonth() + 1;
    var day = d.getDate();
    var hours = d.getHours();
    var min = d.getMinutes();
    var seconds = d.getSeconds();

    if (month < 10) month = '0' + month;
    if (day < 10) day = '0' + day;
    if (hours < 0) hours = '0' + hours;
    if (min < 10) min = '0' + min;
    if (seconds < 10) seconds = '0' + seconds;
    
    var res = "";
    switch (type) {
        case 'yyyy-mm-dd':
            res = (year + '-' + month + '-' + day);
            break;

        case 'yyyy-mm-dd hh:mm':
            res = (year + '-' + month + '-' + day + ' ' + hours + ':' + min);
            break;

        default:
            res = (year + '-' + month + '-' + day + ' ' + hours + ':' + min + ':' + seconds);
            break;
    }
    return res;
};


参考文章 

文章一:

js 中日期转换成时间戳
https://www.cnblogs.com/mmzz3322/p/11218017.html

文章二:

时间戳转换js
https://blog.csdn.net/L_15737525552/article/details/126370583


延伸阅读

js将时间转换成时间戳10位_js 日期转10位时间戳_橙-极纪元的博客-CSDN博客

js 获取时间戳 和随机数_js取时间戳的随机数_橙-极纪元的博客-CSDN博客

js 时间戳格式转换常规时间格式_js日期格式转化为常规格式_橙-极纪元的博客-CSDN博客

js将/Date(1642563573347)/转成可读的日期格式,js时间戳转换可读的日期格式_js /date(16725_橙-极纪元的博客-CSDN博客

JS 时间运算大全_11:20-7:50怎么算 js_橙-极纪元的博客-CSDN博客

万能js时间日期格式转换_橙-极纪元的博客-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/397324.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(二十四)操作系统-吸烟者问题

文章目录一、问题描述二、问题分析1&#xff0e;关系分析2&#xff0e;整理思路3&#xff0e;设置信号量三、实现四、总结一、问题描述 假设一个系统有三个抽烟者进程和一个供应者进程。每个抽烟者不停地卷烟并抽掉它&#xff0c;但是要卷起并抽掉一支烟&#xff0c;抽烟者需要…

String类的底层原理和版本演变

1 String类的底层演变&#xff08;1&#xff09; JDK8以及之前版本 &#xff08;2&#xff09;JDK9以及之后版本 javaJDK8的字符串存储在char类型的数组里面&#xff0c;在java中&#xff0c;一个char类型占两个字节。但是很多时候&#xff0c;一个字符只需要一个字节就可存储&…

QGC UDP 建立通讯连接

QGC关于通信连接建立部分的程序比较复杂&#xff0c;但感觉写的很厉害&#xff0c;通过读代码把自己的一点理解记录下来。收集接收空地通信管理空地通信的管理在“应用程序设置->通讯连接”中进行通信连接创建&#xff0c;连接和断开。通讯连接添加完成后点击“连接”按钮&a…

SpringBoot+Spring常用注解总结

1. SpringBootApplication 这里先单独拎出SpringBootApplication 注解说一下&#xff0c;虽然我们一般不会主动去使用它。 SpringBootApplication public class SpringSecurityJwtGuideApplication {public static void main(java.lang.String[] args) {SpringApplication.ru…

携程 x TiDB丨应对全球业务海量数据增长,一栈式 HTAP 实现架构革新

随着新冠病毒疫情的缓解和控制&#xff0c;全球旅游业逐渐开始重新复苏。尤其在一些度假胜地&#xff0c;游客数量已经恢复到疫情前的水平。 携程作为全球领先的一站式旅行平台&#xff0c;旗下拥有携程旅行网、去哪儿网、Skyscanner 等品牌。携程旅行网向超过 9000 万会员提供…

微服务进阶之 SpringCloud Alibaba

文章目录微服务进阶&#x1f353;SpringCloud 有何劣势&#xff1f;&#x1f353;SpringCloud Alibaba 提供了什么&#xff1f;提示&#xff1a;以下是本篇文章正文内容&#xff0c;SpringCloud 系列学习将会持续更新 微服务进阶 &#x1f353;SpringCloud 有何劣势&#xff1…

Spring的概述及Spring6快速入门

Spring6 1、概述 1.1、Spring是什么&#xff1f; Spring 是一款主流的 Java EE 轻量级开源框架 &#xff0c;Spring 由“Spring 之父”Rod Johnson 提出并创立&#xff0c;其目的是用于简化 Java 企业级应用的开发难度和开发周期。Spring的用途不仅限于服务器端的开发。从简单…

Git图解-远程仓库-Gitee

目录 一、前言 二、远程仓库介绍 三、Gitee&#xff08;码云&#xff09;的使用 3.1 注册与登录 3.2 创建项目 3.3 项目初始化 3.4 添加团队成员 四、转视频版 一、前言 接着上篇&#xff1a; Git图解-常用命令操作-可视化 上篇已将Git可是化操作&#xff0c; 接下来&…

Spring整体架构包含哪些组件?

Spring是一个轻量级java开源框架。Spring是为了解决企业应用开发的复杂性而创建的&#xff0c;它使用基本的JavaBean来完成以前只可能由EJB完成的事情。 Spring的用途不仅限于服务器端的开发&#xff0c;从简单性、可测试性和松耦合的角度而言&#xff0c;任何java应用都可以从…

dolphinschedule使用shell任务结束状态研究

背景&#xff1a;配置的dolphin任务&#xff0c;使用的是shell&#xff0c;shell里包含了spark-submit 如下截图。 dolphin shell 介绍完毕&#xff0c;开始说明现象。 有天有人调整了集群的cdp配置&#xff0c;executor-cores max1 我之前这里写的是2&#xff0c;所以spark任…

如何简单的上手JavaFX17+?解决“缺少 JavaFX 运行时组件, 需要使用该组件来运行此应用程序”等问题

前言 JavaFX是一个Java的一个ui库&#xff0c;但是自从java8以后&#xff0c;它很悲惨的被从OpenJdk中移除了&#xff0c;因此我们使用它来进行开发时&#xff0c;如果我们使用的是8以后的版本&#xff0c;经常会遇到一些问题。这里针对新手做一个简单的引导&#xff08;悲&am…

JDBC知识点全面总结2:JDBC实战编写CRUD

二.JDBC知识点全面总结1&#xff1a;JDBC实战编写CRUD 1.JDBC重要接口&#xff1f; 2.Driver和DriverMangement的关系&#xff1f; 3.JAVA与数据库连接 4.JAVA中使用statement来执行sql语句时&#xff0c;拼接字符串的sql注入问题&#xff1f; 5.使用preparedstatement进行…

【Microsoft】与 Bing AI 进行 ⌈狂飙⌋

&#x1f38a; 今天是3月8号&#xff0c;❤️农历二月十七&#xff0c;&#x1f495;祝广大女同胞们&#x1f469;女神节快乐&#x1f389;&#xff01;——以创作之名致敬女性开发者文章目录序言Ⅰ、Bing AI初体验Ⅱ、代码生成Ⅲ、生成图像Ⅳ、使用次数Ⅴ、总结序言 ​ 近期&…

数据结构与算法之《顺序表》

目录 1.什么是顺序表 顺序表的优势和缺点 顺序表预备知识 顺序表的代码实现 顺序表头部插入 顺序表的销毁 顺序表的头删 顺序表的尾删 顺序表的尾插 顺序表的任意位置插入 顺序表的查找 顺序表的打印 1.什么是顺序表 这篇文章我们来讲一下基础数据结构的顺序表&…

Input子系统(一)启动篇

代码路径 基于AndroidS&#xff08;12.0&#xff09;代码 system/core/libutils/Threads.cppframeworks/base/services- java/com/android/server/SystemServer.java- core- java/com/android/server/input/InputManagerService.java- jni/com_android_server_input_InputMan…

三步 让你的 vscode 自动编译ts文件

三步让你的 vscode 自动编译ts文件 TypeScript环境安装与如何在vscode实现自动编译ts文件? 文章目录三步让你的 vscode 自动编译ts文件前提条件环境安装自动编译运行监视任务时报错&#xff1f;前提条件 安装 node 环境 环境安装 tsc 作用&#xff1a;负责将ts 代码 转为 浏…

感知器算法

感知器算法原理说明 感知器是一种二分类的线性分类算法&#xff0c;其原理基于神经元的工作原理。感知器将输入数据通过加权求和的方式映射到一个输出&#xff0c;然后根据输出的结果进行分类。 具体来说&#xff0c;给定一个训练集 D(x1,y1),(x2,y2),...,(xn,yn)D{(x_1,y_1)…

研报精选230308

目录 【行业230308东吴证券】电力设备行业深度报告&#xff1a;氢能深度&#xff1a;绿氢&#xff0c;第四次能源革命的载体【个股230308安信证券_沪光股份】优秀的民营汽车线束供应商&#xff0c;行业国产化替代空间广阔【行业230308中原证券】食品饮料行业2月月报&#xff1a…

银行数字化转型导师坚鹏:数字化转型为什么需要致良知与知行合一

在银行数字化转型过程中&#xff0c;特别需要致良知与知行合一哲学思想的指导。 知中有行&#xff0c;行中有知&#xff1b;行极而知&#xff0c;知极而行&#xff1b;知行无端&#xff0c;知行无始。知与行是一件事&#xff0c;做事与培养本体&#xff08;修心&#xff09;也是…

手动集成Tencent SDK遇到的坑!!!

手动集成的原因 由于腾讯未把Tencent SDK上传到Github中&#xff0c;所以我们不能通过Cocoapods的方式集成&#xff0c;只能通过官方下载其SDK手动集成。 Tencent SDK手动集成步骤 1.访问腾讯开放平台SDK下载界面&#xff0c;找到并下载iOS_SDK_V3.5.1。&#xff08;目前最新…