相关文章推荐
安静的消炎药  ·  通过HTTP ...·  2 月前    · 
豪情万千的台灯  ·  Meta开源的ChatGPT平替到底好不好用 ...·  1 月前    · 
玩足球的白开水  ·  Meta开源的ChatGPT平替到底好不好用 ...·  1 月前    · 
拉风的保温杯  ·  php如何获取上一个月的今天的上一天的日期- ...·  1 月前    · 
暴走的小熊猫  ·  测试踩坑——JAVA13位时间戳处理,别小瞧 ...·  4 天前    · 
闷骚的蛋挞  ·  在台灣演出的日本戲劇研究-以「曉劇場」的《薩 ...·  5 月前    · 
玩手机的数据线  ·  万兆光纤线可以当做千兆光纤线用吗- 知了社区·  7 月前    · 
强悍的牙膏  ·  世界光谷·  8 月前    · 
不拘小节的电池  ·  大鹏分局-深圳市社会保险基金管理局·  9 月前    · 
阳刚的紫菜汤  ·  清华大学教授汪晖当选为欧洲科学院院士-清华大学·  1 年前    · 
Code  ›  Java获取当天、当前月、当前年(今年)的开始和结束时间戳开发者社区
gmt 时间戳
https://cloud.tencent.com/developer/article/2285686
傲视众生的熊猫
10 月前
翎野君

Java获取当天、当前月、当前年(今年)的开始和结束时间戳

前往小程序,Get 更优 阅读体验!
立即前往
腾讯云
开发者社区
文档 建议反馈 控制台
首页
学习
活动
专区
圈层
工具
MCP广场
文章/答案/技术大牛
发布
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
翎野君
首页
学习
活动
专区
圈层
工具
MCP广场
返回腾讯云官网
社区首页 > 专栏 > Java获取当天、当前月、当前年(今年)的开始和结束时间戳

Java获取当天、当前月、当前年(今年)的开始和结束时间戳

作者头像
翎野君
发布 于 2023-05-12 20:11:10
发布 于 2023-05-12 20:11:10
3.4K 0 0
代码可运行
举报
文章被收录于专栏: 翎野君 翎野君
运行总次数: 0
代码可运行

最近在做统计相关的功能的时候涉及到了获取当天的开始和结束的时间戳、当月和当年的开始结束时间戳,特此记录,以作备忘。

相关代码

代码语言: javascript
代码 运行次数: 0
运行
复制
package com.lingyejun.authenticator;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.util.Calendar;
import java.util.TimeZone;
public class CalendarAdjust {
     * 获取指定某一天的开始时间戳
     * @param timeStamp 毫秒级时间戳
     * @param timeZone  如 GMT+8:00
     * @return
    public static Long getDailyStartTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
        calendar.setTimeInMillis(timeStamp);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTimeInMillis();
     * 获取指定某一天的结束时间戳
     * @param timeStamp 毫秒级时间戳
     * @param timeZone  如 GMT+8:00
     * @return
    public static Long getDailyEndTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
        calendar.setTimeInMillis(timeStamp);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTimeInMillis();
     * 获取当月开始时间戳
     * @param timeStamp 毫秒级时间戳
     * @param timeZone  如 GMT+8:00
     * @return
    public static Long getMonthStartTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();// 获取当前日期
        calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
        calendar.setTimeInMillis(timeStamp);
        calendar.add(Calendar.YEAR, 0);
        calendar.add(Calendar.MONTH, 0);
        calendar.set(Calendar.DAY_OF_MONTH, 1);// 设置为1号,当前日期既为本月第一天
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTimeInMillis();
     * 获取当月的结束时间戳
     * @param timeStamp 毫秒级时间戳
     * @param timeZone  如 GMT+8:00
     * @return
    public static Long getMonthEndTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();// 获取当前日期
        calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
        calendar.setTimeInMillis(timeStamp);
        calendar.add(Calendar.YEAR, 0);
        calendar.add(Calendar.MONTH, 0);
        calendar.set(Calendar.DAY_OF_MONTH, calendar.getActualMaximum(Calendar.DAY_OF_MONTH));// 获取当前月最后一天
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        return calendar.getTimeInMillis();
     * 获取当年的开始时间戳
     * @param timeStamp 毫秒级时间戳
     * @param timeZone  如 GMT+8:00
     * @return
    public static Long getYearStartTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();// 获取当前日期
        calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
        calendar.setTimeInMillis(timeStamp);
        calendar.add(Calendar.YEAR, 0);
        calendar.add(Calendar.DATE, 0);
        calendar.add(Calendar.MONTH, 0);
        calendar.set(Calendar.DAY_OF_YEAR, 1);
        calendar.set(Calendar.HOUR_OF_DAY, 0);
        calendar.set(Calendar.MINUTE, 0);
        calendar.set(Calendar.SECOND, 0);
        calendar.set(Calendar.MILLISECOND, 0);
        return calendar.getTimeInMillis();
     * 获取当年的最后时间戳
     * @param timeStamp 毫秒级时间戳
     * @param timeZone  如 GMT+8:00
     * @return
    public static Long getYearEndTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();// 获取当前日期
        calendar.setTimeZone(TimeZone.getTimeZone(timeZone));
        calendar.setTimeInMillis(timeStamp);
        int year = calendar.get(Calendar.YEAR);
        calendar.clear();
        calendar.set(Calendar.YEAR, year);
        calendar.set(Calendar.HOUR_OF_DAY, 23);
        calendar.set(Calendar.MINUTE, 59);
        calendar.set(Calendar.SECOND, 59);
        calendar.set(Calendar.MILLISECOND, 999);
        calendar.roll(Calendar.DAY_OF_YEAR, -1);
        return calendar.getTimeInMillis();
     * 时间戳转字符串
     * @param timestamp 毫秒级时间戳
     * @param zoneId    如 GMT+8或UTC+08:00
     * @return
    public static String timestampToStr(long timestamp, String zoneId) {
        ZoneId timezone = ZoneId.of(zoneId);
        LocalDateTime localDateTime = LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), timezone);
        return localDateTime.toString();
    public static void main(String[] args) {
        Long currentTime = System.currentTimeMillis();
        System.out.println("Current Time : " + currentTime + " = " + timestampToStr(currentTime, "GMT+8"));
        Long dailyStart = getDailyStartTime(currentTime, "GMT+8:00");
        Long dailyEnd = getDailyEndTime(currentTime, "GMT+8:00");
        Long monthStart = getMonthStartTime(currentTime, "GMT+8:00");
        Long monthEnd = getMonthEndTime(currentTime, "GMT+8:00");
        Long yearStart = getYearStartTime(currentTime, "GMT+8:00");
        Long yearEnd = getYearEndTime(currentTime, "GMT+8:00");
 
推荐文章
安静的消炎药  ·  通过HTTP API进行数据查询聚合与降采样-时间序列数据库 TSDB-阿里云
2 月前
豪情万千的台灯  ·  Meta开源的ChatGPT平替到底好不好用?测试结果、加料改装方法已出炉_澎湃号·湃客_澎湃新闻-The Paper
1 月前
玩足球的白开水  ·  Meta开源的ChatGPT平替到底好不好用?测试结果、加料改装方法已出炉,2天5.2k星|模型|训练|示例|样本|微调_手机新浪网
1 月前
拉风的保温杯  ·  php如何获取上一个月的今天的上一天的日期-百度经验
1 月前
暴走的小熊猫  ·  测试踩坑——JAVA13位时间戳处理,别小瞧了“毫秒“老弟
4 天前
闷骚的蛋挞  ·  在台灣演出的日本戲劇研究-以「曉劇場」的《薩德侯爵夫人》與 ...
5 月前
玩手机的数据线  ·  万兆光纤线可以当做千兆光纤线用吗- 知了社区
7 月前
强悍的牙膏  ·  世界光谷
8 月前
不拘小节的电池  ·  大鹏分局-深圳市社会保险基金管理局
9 月前
阳刚的紫菜汤  ·  清华大学教授汪晖当选为欧洲科学院院士-清华大学
1 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
Code - 代码工具平台
© 2024 ~ 沪ICP备11025650号