學(xué)習(xí)Java的Date、Calendar日期操作
更新時間:2015年07月31日 10:02:59 作者:白小衣
Java開發(fā)過程中避免不了日期相關(guān)操作,這篇文章總結(jié)了一些Date、Calendar的常用方法,需要的朋友可以參考下
本文介紹了Java開發(fā)過程中日期相關(guān)操作,分享的代碼如下:
package jse;
import java.io.UnsupportedEncodingException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
/**
* 常用日期操作
*
* @author puck
* createDate 2015-07-30 22:54:38
*/
public class TestDate
{
public static void main(String[] args) throws ParseException, UnsupportedEncodingException
{
Calendar cal = Calendar.getInstance();
// cal.add(Calendar.DAY_OF_MONTH, -48);
System.out.println(dateToString(cal));
}
/**
* 日期格式化
* @param date
* @return
*/
public static String dateToString(Date date)
{
// SimpleDateFormat format = new SimpleDateFormat("y年MM月dd日 E HH時mm分ss秒", Locale.CHINA);
// SimpleDateFormat format = new SimpleDateFormat("y年M月d日 E H時m分s秒", Locale.CHINA);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.CHINA); // example
return sdf.format(date);
}
/**
* 日期格式化
* @param date
* @return
*/
public static String dateToString(Calendar cal)
{
return dateToString(cal.getTime());
}
/**
* dateString 轉(zhuǎn) Calendar
*
* @param Date
* format:2015-06-16 date
* @return Calendar
* @throws ParseException
*/
public static Calendar dateStringToCalendar(String dateStr) throws ParseException
{
// Calendar cal = Calendar.getInstance();
// cal.clear();
// cal.set(Integer.parseInt(date.substring(0, 4)), Integer.parseInt(date.substring(5, 7)) - 1,
// Integer.parseInt(date.substring(8, 10)));
// return cal;
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse(dateStr);
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal;
}
/**
* dateString 轉(zhuǎn) Date
*
* @param Date
* format:yyyy-MM-dd HH:mm:ss date
* @return Calendar
* @throws ParseException
*/
public static Date dateStringToDate(String date) throws ParseException
{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
return sdf.parse(date);
}
/**
* Date Convert to Calendar
*
* @param date
* @return
*/
public static Calendar dateToCalendar(Date date)
{
Calendar c1 = Calendar.getInstance();
c1.setTime(date);
return c1;
}
/**
* Calendar Convert To Date
* @param cal
* @return
*/
public static Date CalendarToDate(Calendar cal)
{
return cal.getTime();
}
/**
* 計(jì)算兩個日期相差年月日
*
* @param Date
* c1
* @param Date
* c2
* @return int[]{year, month, day}
*/
public int[] calculateDifferDay(Date d1, Date d2)
{
Calendar c1 = Calendar.getInstance();
c1.setTime(d1);
Calendar c2 = Calendar.getInstance();
c1.setTime(d2);
return calculateDifferDay(c1, c2);
}
/**
* 計(jì)算兩個日期相差年月日
*
* @param Calendar
* c1
* @param Calendar
* c2
* @return int[]{year, month, day}
*/
public int[] calculateDifferDay(Calendar c1, Calendar c2)
{
int[] p1 = { c1.get(Calendar.YEAR), c1.get(Calendar.MONTH), c1.get(Calendar.DAY_OF_MONTH) };
int[] p2 = { c2.get(Calendar.YEAR), c2.get(Calendar.MONTH), c2.get(Calendar.DAY_OF_MONTH) };
System.out.println("p1[0]=" + p1[0] + " p1[1]=" + p1[1] + " p1[2]=" + p1[2]);
System.out.println("p2[0]=" + p2[0] + " p2[1]=" + p2[1] + " p2[2]=" + p2[2]);
int year = p2[0] - p1[0];
int month = (p2[0] * 12) + p2[1] - ((p1[0] * 12) + p1[1]);
int day = (int) ((c2.getTimeInMillis() - c1.getTimeInMillis()) / (24 * 60 * 60 * 1000));
return new int[] { year, month, day };
}
/**
* 獲取日期所在周的第一天
*
* @param c
* @return
*/
public static Calendar getLastDayOfWeek(Calendar c)
{
// SimpleDateFormat format2 = new SimpleDateFormat("y年M月d日 E H時m分s秒", Locale.CHINA);
// System.out.println("當(dāng)前時間:" + format2.format(c.getTime()));
c.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
// System.out.println("周一時間:" + format2.format(c.getTime()));
return c;
}
/**
* 日期加減
* @param c
* @param day
* @return
*/
public static Calendar addOrDecreaseDay(Calendar c, int day)
{
c.add(Calendar.DAY_OF_MONTH, day);
return c;
}
/**
* 獲取月最后一天
* @param year
* @param month
* @return
*/
public static int getLastDayOfMonth(int year, int month)
{
Calendar c = Calendar.getInstance();
c.set(year, month - 1, 1);
return c.getActualMaximum(Calendar.DAY_OF_MONTH);
}
/**
* 獲取月最后一天
* @param cal
* @return
*/
public static int getLastDayOfMonth(Calendar cal)
{
return cal.getActualMaximum(Calendar.DAY_OF_MONTH);
}
}
相關(guān)文章
集合框架及背后的數(shù)據(jù)結(jié)構(gòu)
本文主要介紹了Java的集合框架Java?Collection?Framework,接口interface以及背后的數(shù)據(jù)結(jié)構(gòu),感興趣的同學(xué)可以閱讀參考2023-03-03
SpringBoot Actuator未授權(quán)訪問漏洞解決方案
工作的時候遇到過提示Spring Boot后端存在Actuator未授權(quán)訪問漏洞,網(wǎng)上有很多詳細(xì)的解釋文章,在這里做一個簡單的總結(jié)、介紹和分享,需要的朋友可以參考下2023-09-09
解決FontConfiguration.getVersion報(bào)空指針異常的問題
這篇文章主要介紹了解決FontConfiguration.getVersion報(bào)空指針異常的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-06-06
Java多線程異步調(diào)用性能調(diào)優(yōu)方法詳解
這篇文章主要為大家詳細(xì)介紹了Java多線程異步調(diào)用性能調(diào)優(yōu),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03
java多線程抓取鈴聲多多官網(wǎng)的鈴聲數(shù)據(jù)
很容易就能發(fā)現(xiàn)通過改變 listId和page就能從服務(wù)器獲取鈴聲的json數(shù)據(jù), 通過解析json數(shù)據(jù), 可以看到都帶有{"hasmore":1,"curpage":1}這樣子的指示,通過判斷hasmore的值,決定是否進(jìn)行下一頁的抓取。 但是通過上面這個鏈接返回的json中不帶有鈴聲的下載地址2016-04-04

