成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Java獲取當(dāng)天、當(dāng)前月、當(dāng)前年(今年)的開始和結(jié)束時(shí)間戳

BenCHou / 2554人閱讀

摘要:最近在做統(tǒng)計(jì)相關(guān)的功能的時(shí)候涉及到了獲取當(dāng)天的開始和結(jié)束的時(shí)間戳當(dāng)月和當(dāng)年的開始結(jié)束時(shí)間戳,特此記錄,以作備忘。

最近在做統(tǒng)計(jì)相關(guān)的功能的時(shí)候涉及到了獲取當(dāng)天的開始和結(jié)束的時(shí)間戳、當(dāng)月和當(dāng)年的開始結(jié)束時(shí)間戳,特此記錄,以作備忘。

相關(guān)代碼
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 {

    /**
     * 獲取指定某一天的開始時(shí)間戳
     *
     * @param timeStamp 毫秒級(jí)時(shí)間戳
     * @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();
    }

    /**
     * 獲取指定某一天的結(jié)束時(shí)間戳
     *
     * @param timeStamp 毫秒級(jí)時(shí)間戳
     * @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();
    }

    /**
     * 獲取當(dāng)月開始時(shí)間戳
     *
     * @param timeStamp 毫秒級(jí)時(shí)間戳
     * @param timeZone  如 GMT+8:00
     * @return
     */
    public static Long getMonthStartTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();// 獲取當(dāng)前日期
        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);// 設(shè)置為1號(hào),當(dāng)前日期既為本月第一天
        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();
    }

    /**
     * 獲取當(dāng)月的結(jié)束時(shí)間戳
     *
     * @param timeStamp 毫秒級(jí)時(shí)間戳
     * @param timeZone  如 GMT+8:00
     * @return
     */
    public static Long getMonthEndTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();// 獲取當(dāng)前日期
        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));// 獲取當(dāng)前月最后一天
        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();
    }

    /**
     * 獲取當(dāng)年的開始時(shí)間戳
     *
     * @param timeStamp 毫秒級(jí)時(shí)間戳
     * @param timeZone  如 GMT+8:00
     * @return
     */
    public static Long getYearStartTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();// 獲取當(dāng)前日期
        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();
    }

    /**
     * 獲取當(dāng)年的最后時(shí)間戳
     *
     * @param timeStamp 毫秒級(jí)時(shí)間戳
     * @param timeZone  如 GMT+8:00
     * @return
     */
    public static Long getYearEndTime(Long timeStamp, String timeZone) {
        Calendar calendar = Calendar.getInstance();// 獲取當(dāng)前日期
        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();
    }

    /**
     * 時(shí)間戳轉(zhuǎn)字符串
     *
     * @param timestamp 毫秒級(jí)時(shí)間戳
     * @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");

        System.out.println("Daily Start : " + dailyStart + " = " + timestampToStr(dailyStart, "GMT+8") + " Daily End : " + dailyEnd + " = " + timestampToStr(dailyEnd, "GMT+8"));
        System.out.println("Month Start : " + monthStart + " = " + timestampToStr(monthStart, "GMT+8") + " Month End : " + monthEnd + " = " + timestampToStr(monthEnd, "GMT+8"));
        System.out.println("Year Start : " + yearStart + " = " + timestampToStr(yearStart, "GMT+8") + " Year End : " + yearEnd + " = " + timestampToStr(yearEnd, "GMT+8"));
    }
}
效果

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/75787.html

相關(guān)文章

  • JS將時(shí)間轉(zhuǎn)換為剛剛、N分鐘前、今天幾點(diǎn)幾分、昨天幾點(diǎn)幾分等表示法

    方法一: 使用Javascript語言,將時(shí)間戳轉(zhuǎn)換為類似新浪微博的時(shí)間的表示方法。要求轉(zhuǎn)換規(guī)則:1分鐘以內(nèi)顯示為:剛剛1小時(shí)以內(nèi)顯示為:N分鐘前當(dāng)天以內(nèi)顯示為:今天 N點(diǎn)N分(如:今天 22:33)昨天時(shí)間顯示為:昨天 N點(diǎn)N分(如:昨天 10:15)當(dāng)年以內(nèi)顯示為:N月N日 N點(diǎn)N分(如:02月03日 09:33)今年以前顯示為:N年N月N日 N點(diǎn)N分(如:2000年09月18日 15:59)...

    DirtyMind 評(píng)論0 收藏0
  • 20 個(gè)案例教你在 Java 8 中如何處理日期時(shí)間?

    摘要:前言前面一篇文章寫了如何安全的使用里面介紹了如何處理日期時(shí)間,以及如何保證線程安全,及其介紹了在中的處理時(shí)間日期默認(rèn)就線程安全的類。引入了全新的日期時(shí)間格式工具,線程安全而且使用方便。 前言 前面一篇文章寫了《SimpleDateFormat 如何安全的使用?》, 里面介紹了 SimpleDateFormat 如何處理日期/時(shí)間,以及如何保證線程安全,及其介紹了在 Java 8 中的處...

    Rango 評(píng)論0 收藏0
  • Java8新特性之日期處理

    摘要:處理日期日歷和時(shí)間的不足之處將設(shè)定為可變類型,以及的非線程安全使其應(yīng)用非常受限。最完整的日期時(shí)間,包含時(shí)區(qū)和相對(duì)或格林威治的時(shí)差。獲取當(dāng)前的日期中的用于表示當(dāng)天日期。 簡介 伴隨 lambda表達(dá)式、streams 以及一系列小優(yōu)化,Java 8 推出了全新的日期時(shí)間API。 Java處理日期、日歷和時(shí)間的不足之處:將 java.util.Date 設(shè)定為可變類型,以及 SimpleD...

    Airy 評(píng)論0 收藏0
  • Java時(shí)間類總結(jié)

    摘要:獲取當(dāng)天是幾號(hào)獲取當(dāng)天是星期幾獲取本月的第一天取本月最后一天是不是很贊提供時(shí)分秒不提供年月日,也是線程安全并且不可變類。樣例獲取當(dāng)前的小時(shí)小時(shí)數(shù)加結(jié)果包含年月日時(shí)分秒,精確到納秒級(jí)別,同樣是線程安全并且不可變類。 java.util.Date 包含有年月日時(shí)分秒,精確到毫秒級(jí)別。官方解釋: // The class Date represents a specific instant ...

    coolpail 評(píng)論0 收藏0
  • python日期時(shí)間處理總結(jié)

    摘要:用了一段時(shí)間的開發(fā)項(xiàng)目,也是第一次用來開發(fā)項(xiàng)目,所有有許多相關(guān)的知識(shí)點(diǎn)需要總結(jié),本文所介紹的的日期時(shí)間處理就是最近用到的,希望對(duì)各位有所幫助,也同時(shí)作為自己的筆記儲(chǔ)存。提供了等模塊用于處理日期和時(shí)間,較為常用的還是模塊。 用了一段時(shí)間的django開發(fā)web項(xiàng)目,也是第一次用python來開發(fā)項(xiàng)目,所有有許多相關(guān)的知識(shí)點(diǎn)需要總結(jié),本文所介紹的python的日期時(shí)間處理就是最近用到的,希...

    DoINsiSt 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

BenCHou

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<