JS两个日期之间计算时间差

本文详细介绍了如何使用JavaScript进行日期对象的创建,通过三种方法获取日期的毫秒数,以及如何计算两个日期之间的毫秒差,并将其转换为具体日期格式。同时,分享了一个在实际项目中遇到的日期设置问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、计算两个日期之间相差的毫秒数(也就是两个日期的时间戳差)

这里有几种常见的JS方式,来获得日期的毫秒数。
1.日期对象的 getTime();方法
<script>
    var date = new Date(); //新建一个日期对象,默认现在的时间
	var timestamp = date.getTime();	//调用getTime()方法获取毫秒数
	alert("timestamp: "+timestamp);
</script>
2. 日期对象的valueOf();方法
<script>
    var date = new Date(); //新建一个日期对象,默认现在的时间
	var timestamp = date.valueOf(date); //调用valueOf()方法获取毫秒数
	alert("timestamp: "+timestamp);
</script>
3. Date对象的parse();方法
<script>
    var date = new Date(); //新建一个日期对象,默认现在的时间
	var timestamp = Date.parse(date);//使用Date对象的parse()方法,获取毫秒数
	alert("timestamp: "+timestamp);
</script>

二、用现在时间的毫秒数减去过去时间的毫秒数,得到的就是两个日期相差的总毫秒数。

ps:可以使用上述的三种方法,另外还有一种最为简单的方法。如果两个日期对象都是Date类型的话,可以直接相减,得到的就是毫秒数差。
<script>
	var new_date = new Date(); //新建一个日期对象,默认现在的时间
	var old_date = new Date("2018-12-12 00:00:00"); //设置过去的一个时间点,"yyyy-MM-dd HH:mm:ss"格式化日期
	
	var difftime = new_date - old_date; //计算时间差
	
	alert("difftime: "+difftime);
</script>

三、得到了两个日期的毫秒差之后,就可以转化成具体的日期格式(xxxx年xx月xx天,xx小时xx分钟xx秒)

因为我们获取的是毫秒,所有要先转换成秒。1秒=1000毫秒
<script>
	var new_date = new Date(); //新建一个日期对象,默认现在的时间
	var old_date = new Date("2018-12-12 00:00:00"); //设置过去的一个时间点,"yyyy-MM-dd HH:mm:ss"格式化日期
	
	var difftime = (new_date - old_date)/1000; //计算时间差,并把毫秒转换成秒
	
	var days = parseInt(difftime/86400); // 天  24*60*60*1000 
   	var hours = parseInt(difftime/3600)-24*days;    // 小时 60*60 总小时数-过去的小时数=现在的小时数 
   	var minutes = parseInt(difftime%3600/60); // 分钟 -(day*24) 以60秒为一整份 取余 剩下秒数 秒数/60 就是分钟数
   	var seconds = parseInt(difftime%60);  // 以60秒为一整份 取余 剩下秒数
   	
   	alert("时间差是: "+days+"天, "+hours+"小时, "+minutes+"分钟, "+seconds+"秒");		
</script>
另外本人踩过坑的一个项目,还是从网上获取的别人的代码,不曾想还是个有bug的项目。

当时这种方式设置日期,然后再获取毫秒数,就会出现30天的时间差。后来干脆直接格式化一下日期放进去,没想到就对了。我也很懵比,有知道的大牛,可以告知一下这样做为什么会好,万分感谢!!!
在这里插入图片描述
GitHub源码:https://github.com/xinyi-jin/Romantic-confession
阿里云服务器地址:http://116.62.231.236:8080/zhuhe/

ps:部分浏览器不支持,会显示日期错误

计算两个日期之间时间差,可以采用多种方法,具体取决于使用的编程语言和需求。以下是一些常见的方法和步骤: ### 方法一:使用编程语言内置的日期库 #### Python Python 提供了 `datetime` 模块,可以方便地计算日期差异。 ```python from datetime import datetime # 定义两个日期 date1 = datetime.strptime('2023-01-01', '%Y-%m-%d') date2 = datetime.strptime('2023-12-31', '%Y-%m-%d') # 计算差异 difference = date2 - date1 # 输出差异 print(f"时间差为: {difference.days} 天") ``` #### Java 在 Java 中,可以使用 `java.time` 包中的类来计算日期差异。 ```java import java.time.LocalDate; import java.time.Period; public class DateDifference { public static void main(String[] args) { LocalDate date1 = LocalDate.of(2023, 1, 1); LocalDate date2 = LocalDate.of(2023, 12, 31); Period period = Period.between(date1, date2); System.out.println("时间差为: " + period.getDays() + " 天"); System.out.println("时间差为: " + period.getMonths() + " 个月"); System.out.println("时间差为: " + period.getYears() + " 年"); } } ``` ### 方法二:使用时间戳 #### JavaScript 在 JavaScript 中,可以使用 `Date` 对象来计算时间差。 ```javascript let date1 = new Date('2023-01-01'); let date2 = new Date('2023-12-31'); let differenceInMilliseconds = date2 - date1; let differenceInDays = differenceInMilliseconds / (1000 * 60 * 60 * 24); console.log(`时间差为: ${differenceInDays} 天`); ``` ### 方法三:使用 SQL 在 SQL 中,可以使用日期函数来计算时间差。 #### MySQL ```sql SELECT DATEDIFF('2023-31', '2023-01-01') AS DifferenceInDays; ``` #### PostgreSQL ```sql SELECT DATE '2023-12-31' - DATE '2023-01-01' AS DifferenceInDays; ``` ### 方法四:使用 Excel 在 Excel 中,可以使用 `DATEDIF` 函数来计算日期差异。 ```excel =DATEDIF(A1, B1, "D") ``` 其中,A1 和 B1 分别是两个日期单元格。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值