通过时间戳获取 今日凌晨时间、已过时间

package com.telincn.test;


import java.sql.Timestamp;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;

public class Test {
    public static void main(String[] args) {
            long current=System.currentTimeMillis();//当前时间毫秒数
            long time=TimeZone.getDefault().getRawOffset();//获取时区差
        long zero=current/(1000*3600*24)*(1000*3600*24)-time;//今天零点零分零秒的毫秒数(取整,得到凌晨时间

        

        Timestamp t=new Timestamp(current-zero-time);//减去时区差,中国时间比格林尼治时间快8小时
        System.out.println("通过时间戳获取时间"+t);//通过时间戳----类----获取已过时间

        System.out.println("通过时间戳获取时间"+new Date(current-zero-time));




    }

}
### 如何获取当天零时间戳 #### 使用Python实现 在Python中,可以利用`datetime`模块来计算当天零时间戳。具体方法是先得到当前日期的对象,再将其设置为午夜时刻(即00:00),最后转换成时间戳形式。 ```python from datetime import datetime, timedelta today_start = datetime.combine(datetime.today(), datetime.min.time()) timestamp_at_midnight = int(today_start.timestamp()) print(f"今天的零时间戳为:{timestamp_at_midnight}") ``` 这段代码首先创建了一个表示今日凌晨时间对象[^1],接着通过`.timestamp()`函数将这个时间转化为Unix时间戳并打印出来。 #### Java中的解决方案 对于Java而言,则可以通过下面的方式快速求得: ```java long now = System.currentTimeMillis(); long daySecond = 24L * 60 * 60 * 1000; // 减去时区偏移量以及一天内的剩余毫秒数 long zeroTodayTimestamp = now - (now + TimeZone.getDefault().getRawOffset()) % daySecond; System.out.println("今天的零时间戳:" + zeroTodayTimestamp); ``` 这里采用了一种较为高效的算法,它考虑到了不同地区的时差问题,并且能够准确地返回给定地区当天起始位置对应的时间戳值[^3]。 #### PHP版本的做法 而在PHP里同样有简便的方法可以获得相同的结果: ```php <?php $timezone_offset = date('Z'); // 获取本地时区相对于UTC的偏差秒数 $midnight_timestamp = strtotime('today') - $timezone_offset; echo "今天的零时间戳:" . $midnight_timestamp; ?> ``` 此段脚本会输出服务器所在时区内对应的当天最早整分钟时刻的时间戳[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值