javacalendar,Java calendar用法

本文目錄一覽:

Java中中關於Calendar類的幾點注意事項

在使用Java的Calendar類會遇到的幾個問題,這裡整理一下,供參考

在獲取月份時,Calendar.MONTH + 1 的原因

Java中的月份遵循了羅馬歷中的規則:當時一年中的月份數量是不固定的,第一個月是JANUARY。而Java中Calendar.MONTH返回的數值其實是當前月距離第一個月有多少個月份的數值,所以月份為JANUARY在Java中返回「0」,依次類推也就是在取Calendar.MONTH的值時我們需要+1。

2. 在獲取星期幾 Calendar.DAY_OF_WEEK – 1 的原因

Java中Calendar.DAY_OF_WEEK其實表示:一周中的第幾天,所以他會受到 第一天是星期幾 的影響。

有些地區以星期日作為一周的第一天,而有些地區以星期一作為一周的第一天,這2種情況是需要區分的。

看下錶的返回值

所以Calendar.DAY_OF_WEEK需要根據本地化設置的不同而確定是否需要 「-1」

Java中設置不同地區的輸出可以使用 Locale.setDefault(Locale.地區名) 來實現。

3. 獲取日期時 Calendar.DAY_OF_MONTH 不需要特殊的操作,他直接返回一個月中的第幾天

Java中日曆類(CalendarClass)的用途?

Java中日曆類(Calendar類)的用途如下:

Calendar類的靜態方法getInstance()可以初始化一個日曆對象:Calendar now =         Calendar.getInstance();    

可以使用下面三個方法把日曆定到任何一個時間:

     set(int year ,int month,int date)  ;

     set(int year ,int month,int date,int hour,int minute) ;

     set(int year ,int month,int date,int hour,int minute,int second) ;

如果想獲得年份、月份、小時等信息可以使用:  

      Now.get(Calendar.Month);//這樣的方法 0表示一月,1表示二月  

     get(Calendar.DAY_OF_MONTH);//獲得這個月的第幾天

     get(Calendar.DAY_OF_WEEK);//獲得這個星期的第幾天 

     get(Calendar.DAY_OF_YEAR);//獲得這個年的第幾天  

       getTimeMillis();//獲得當前時間的毫秒表示

1.計算某一月份的最大天數

    Calendar time=Calendar.getInstance(); 

    time.clear(); 

    time.set(Calendar.YEAR,year); 

    time.set(Calendar.MONTH,i-1);//注意,Calendar對象默認一月為0             

    int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天數

    註:在使用set方法之前,必須先clear一下,否則很多信息會繼承自系統當前時間

    2.Calendar和Date的轉化

    (1) Calendar轉化為Date

    Calendar cal=Calendar.getInstance();

    Date date=cal.getTime();

    (2) Date轉化為Calendar

    Date date=new Date();

    Calendar cal=Calendar.getInstance();

    cal.setTime(date);

    3.格式化輸出日期時間

    Date date=new Date();

    SimpleDateFormat df=new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);

    System.out.println(df.format(date));

4.計算相隔天數的方法

    public int getDaysBetween (Calendar d1, Calendar d2){

      if (d1.after(d2)){  // swap dates so that d1 is start and d2 is end

           java.util.Calendar swap = d1;

           d1 = d2;

           d2 = swap;

      }

      int days = d2.get(Calendar.DAY_OF_YEAR) – d1.get(Calendar.DAY_OF_YEAR);

      int y2 = d2.get(Calendar.YEAR);

     if (d1.get(Calendar.YEAR) != y2){

           d1 = (Calendar) d1.clone();

           do{

             days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到當年的實際天數

               d1.add(Calendar.YEAR, 1);

          } while (d1.get(Calendar.YEAR) != y2);

      }

       return days;

    }

java 中Calendar.getInstance() 實現的是什麼?

java中calendar.getinstance()和new

date()的差別如下:

calendar.getinstance()是獲取一個calendar對象並可以進行時間的計算,時區的指定

new

date()是創建了一個date對象,默認是utc格式的。

二者可以相互轉化:

calendar

calendar

=

calendar.getinstance();

//

從一個

calendar

對象中獲取

date

對象

date

date

=

calendar.gettime();

//

date

對象反應到一個

calendar

對象中,

//

calendar/gregoriancalendar

沒有構造函數可以接受

date

對象

//

所以我們必需先獲得一個實例,然後設置

date

對象

calendar.settime(date);

java中的Calendar如何使用?

package pack.java.calendar.demo;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.GregorianCalendar;

public class CalendarDemo {

private static SimpleDateFormat date_format = new SimpleDateFormat(“yyyy-MM-dd hh:mm:ss”);

public static void main(String[] args) {

//獲取calendar實例;

Calendar calendar = Calendar.getInstance();

//判斷calendar是不是GregorianCalendar類的實例;

if(calendar instanceof GregorianCalendar){

System.out.println(“屬於GregorianCalendar類的實例!”);

}

//從calendar對象中獲得date對象,當前時間;

Date dates = calendar.getTime();

//格式化時間;

String date_str= date_format.format(dates);

System.out.println(date_str);

//設置月份05;代表日曆的月份6月,因為月份從0開始。

calendar.set(Calendar.MONTH, 05);

int months = calendar.get(Calendar.MONTH);

System.out.println(months); //輸出05;

//設置日期為2011-07-24 09:59:50

calendar.set(2011, 06, 24, 9, 59, 50);

String getDate = date_format.format(calendar.getTime());

System.out.println(getDate); //輸出2011-07-24 09:59:50;

//比較日前大小;

if(new Date().getTime() calendar.getTimeInMillis()){

System.out.println(“當前日期在後!”);

}else{

System.out.println(“當前日期在前!”);

}

//設置當前時間為:2011-07-24 11:06:00

calendar.setTime(new Date());

int year = calendar.get(Calendar.YEAR); //獲取年;

int month = calendar.get(Calendar.MONTH); //獲取月;

int date = calendar.get(Calendar.DATE); //獲取天;

int hour = calendar.get(Calendar.HOUR); //獲取小時;

int minute = calendar.get(Calendar.MINUTE); //獲取分鐘;

int second = calendar.get(Calendar.SECOND); //獲取秒鐘;

int hour_of_day = calendar.get(Calendar.HOUR_OF_DAY); //第幾個小時,

int day_of_month = calendar.get(Calendar.DAY_OF_MONTH); //這天,在一個月內是第幾天.

int day_of_week = calendar.get(Calendar.DAY_OF_WEEK); //這天,在一周內,是第幾天.

int day_of_year = calendar.get(Calendar.DAY_OF_YEAR); //這天,在一年內,是第幾天。

int week_of_year = calendar.get(Calendar.WEEK_OF_YEAR); //這周,在一年內是第幾周;

int week_of_month = calendar.get(Calendar.WEEK_OF_MONTH);//這周,在這個月是第幾周;以以星為標準;

int zone_offset = calendar.get(Calendar.ZONE_OFFSET); //獲取時區;

int day_of_week_in_month = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH); //某月中第幾周,按這個月1號算,1號起就是第1周,8號起就是第2周。以月份天數為標準

int r = calendar.get(Calendar.AM_PM);

if(r==calendar.AM){

System.out.println(“現在是上午”);

}

if(r==calendar.PM){

System.out.println(“現在是下午”);

}

System.out.println(“==================================================”);

System.out.println(year);

System.out.println(month);

System.out.println(date);

System.out.println(hour);

System.out.println(minute);

System.out.println(second);

System.out.println(hour_of_day);

System.out.println(day_of_month);

System.out.println(day_of_week);

System.out.println(day_of_year);

System.out.println(week_of_year);

System.out.println(week_of_month);

System.out.println(zone_offset);

System.out.println(day_of_week_in_month);

}

}

java Calendar設置日期

int m1 = c.get(Calendar.MONTH);

設置的地方,和取出來的地方,都沒有考慮+1,所以結果還是7。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/269937.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-16 13:34
下一篇 2024-12-16 13:34

相關推薦

  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java Bean載入過程

    Java Bean載入過程涉及到類載入器、反射機制和Java虛擬機的執行過程。在本文中,將從這三個方面詳細闡述Java Bean載入的過程。 一、類載入器 類載入器是Java虛擬機…

    編程 2025-04-29
  • Java騰訊雲音視頻對接

    本文旨在從多個方面詳細闡述Java騰訊雲音視頻對接,提供完整的代碼示例。 一、騰訊雲音視頻介紹 騰訊雲音視頻服務(Cloud Tencent Real-Time Communica…

    編程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介紹

    本文將詳細介紹Java Milvus SearchParam withoutFields的相關知識和用法。 一、什麼是Java Milvus SearchParam without…

    編程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java語言中的一個版本,於2014年3月18日發布。本文將從多個方面對Java 8中某一周的周一進行詳細的闡述。 一、數組處理 Java 8新特性之一是Stream…

    編程 2025-04-29
  • Java判斷字元串是否存在多個

    本文將從以下幾個方面詳細闡述如何使用Java判斷一個字元串中是否存在多個指定字元: 一、字元串遍歷 字元串是Java編程中非常重要的一種數據類型。要判斷字元串中是否存在多個指定字元…

    編程 2025-04-29
  • VSCode為什麼無法運行Java

    解答:VSCode無法運行Java是因為默認情況下,VSCode並沒有集成Java運行環境,需要手動添加Java運行環境或安裝相關插件才能實現Java代碼的編寫、調試和運行。 一、…

    編程 2025-04-29
  • Java任務下發回滾系統的設計與實現

    本文將介紹一個Java任務下發回滾系統的設計與實現。該系統可以用於執行複雜的任務,包括可回滾的任務,及時恢復任務失敗前的狀態。系統使用Java語言進行開發,可以支持多種類型的任務。…

    編程 2025-04-29
  • Java 8 Group By 會影響排序嗎?

    是的,Java 8中的Group By會對排序產生影響。本文將從多個方面探討Group By對排序的影響。 一、Group By的概述 Group By是SQL中的一種常見操作,它…

    編程 2025-04-29

發表回復

登錄後才能評論