本文目錄一覽:
- 1、Java中中關於Calendar類的幾點注意事項
- 2、Java中日曆類(CalendarClass)的用途?
- 3、java 中Calendar.getInstance() 實現的是什麼?
- 4、java中的Calendar如何使用?
- 5、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