java date 实例_Java Date 和 Calendar 实例
Java 之 Date 和 Calendar 實例
package com.homer.learn;
import java.text.DateFormat;
import java.text.ParsePosition;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
public class TimeTest {
public static void main(String[] args) {
TimeTest tt = new TimeTest();
System.out.println("\n當前日期: ");
System.out.println(tt.getNowTime());// 獲取當前時間
System.out.println(tt.getNowTime2());// 獲取當前時間
System.out.println(tt.getNowTime3());// 獲取當前時間
System.out.println("\n計算周: ");
System.out.println(tt.getDaysOfNow2SundayInWeek());// 獲取當前日期與本周日的相差天數
System.out.println(tt.getDateOfMondayInWeek());// 獲取本周一的日期
System.out.println(tt.getDateOfSaturdayInWeek());// 獲取本周六的日期
System.out.println(tt.getDateOfSaturdayInNextWeek());// 獲取下周一的日期
System.out.println(tt.getDateOfSaturdayInLastWeek());// 獲取上周一的日期
System.out.println("\n計算月: ");
System.out.println(tt.getFirstDayOfMonth());// 獲取當月的第一天
System.out.println(tt.getLastDayOfMonth());// 獲取當月最后一天
System.out.println(tt.getFirstDayOfPreviousMonth());// 獲取上月第一天
System.out.println(tt.getLastDayOfPreviousMonth());// 獲取上月最后一天
System.out.println(tt.getFirstDayOfNextMonth());// 獲取下月第一天
System.out.println(tt.getLastDayOfNextMonth());// 獲取下月最后一天
System.out.println("\n計算年: ");
System.out.println(tt.getFirstDayOfYear());// 獲取本年的第一天
System.out.println(tt.getLastDayOfYear());// 獲取本年最后一天
System.out.println(tt.getFirstDayOfPreviousYear());// 獲取上年的第一天
System.out.println(tt.getLastDayOfPreviousYear());// 獲取上年最后一天
System.out.println(tt.getFirstDayOfNextYear());// 獲取下年的第一天
System.out.println(tt.getLastDayOfNextYear());// 獲取下年最后一天
System.out.println(tt.getDaysOfYear());// 獲取本年的天數
System.out.println("\n計算季度: ");
System.out.println(tt.getSeasonOfMonth()); // 獲取當前月的季度
System.out.println(tt.getLastDayOfNow());// 獲取當前天所在月份的天數
System.out.println(tt.isLeapYear(2012)); // 判斷是否是潤年
System.out.println("\n日期格式轉換與計算: ");
System.out.println(tt.getDateFromStr("2012-06-20"));// 將字符串時間格式 yyyy-MM-dd,轉換成Date類型
System.out.println(tt.getWeek("2012-06-20"));// 根據一個日期,返回是星期幾的字符串
System.out.print("2012-06-02 -> 2012-06-12間隔天數:");// 計算兩個日期間的間隔天數
System.out.println(tt.getDaysFromTwoDate("2012-06-02", "2012-06-12"));
}
// 獲取當前時間
public String getNowTime() {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Date now = new Date();
return sDateFormat.format(now);
}
public String getNowTime2() {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date now = new Date(System.currentTimeMillis());
return sDateFormat.format(now);
}
public String getNowTime3() {
StringBuilder strBuildNow = new StringBuilder();
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1;
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);
int millissecond = calendar.get(Calendar.MILLISECOND);
strBuildNow.append(year + "-");
strBuildNow.append(month + "-");
strBuildNow.append(day + " ");
strBuildNow.append(hour + ":");
strBuildNow.append(minute + ":");
strBuildNow.append(second + ".");
strBuildNow.append(millissecond);
return strBuildNow.toString();
}
// 獲取當前日期與本周日的相差天數
public int getDaysOfNow2SundayInWeek() {
Calendar calendar = Calendar.getInstance();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK) - 1;// 減一天,周一為1,符合中國人習慣。Sunday - 1; Monday - 2; Saturday - 7
if(dayOfWeek == 0) {// 周日
return 0;
} else {
return 0 - dayOfWeek;
}
}
// 獲取本周一的日期
public String getDateOfMondayInWeek(){
int day = this.getDaysOfNow2SundayInWeek() + 1;// 加1,即周一離本周日的間隔天數
GregorianCalendar gCalendar = new GregorianCalendar();
gCalendar.add(GregorianCalendar.DATE, day);// 計算與本周一相差的時間間隔
Date curDay = gCalendar.getTime();
DateFormat dateFormat = DateFormat.getInstance();
String dateOfMonday = dateFormat.format(curDay);
return dateOfMonday;
}
// 獲取本周六的日期
public String getDateOfSaturdayInWeek(){
int day = this.getDaysOfNow2SundayInWeek() + 6;// 加6,即周六離本周日的間隔天數
GregorianCalendar gCalendar = new GregorianCalendar();
gCalendar.add(GregorianCalendar.DATE, day);// 計算與本周六相差的時間間隔
Date curDay = gCalendar.getTime();
DateFormat dateFormat = DateFormat.getInstance();
String dateOfMonday = dateFormat.format(curDay);
return dateOfMonday;
}
// 獲取上周一的日期
public String getDateOfSaturdayInLastWeek(){
int day = this.getDaysOfNow2SundayInWeek() - 1;// 減1,即上周一離本周日的間隔天數
GregorianCalendar gCalendar = new GregorianCalendar();
gCalendar.add(GregorianCalendar.DATE, day);// 計算與上周一相差的時間間隔
Date curDay = gCalendar.getTime();
DateFormat dateFormat = DateFormat.getInstance();
String dateOfMonday = dateFormat.format(curDay);
return dateOfMonday;
}
// 獲取下周一的日期
public String getDateOfSaturdayInNextWeek(){
int day = this.getDaysOfNow2SundayInWeek() + 8;// 加8,即下周一離本周日的間隔天數
GregorianCalendar gCalendar = new GregorianCalendar();
gCalendar.add(GregorianCalendar.DATE, day);// 計算與下周一相差的時間間隔
Date curDay = gCalendar.getTime();
DateFormat dateFormat = DateFormat.getInstance();
String dateOfMonday = dateFormat.format(curDay);
return dateOfMonday;
}
// 獲取當月第一天
public String getFirstDayOfMonth() {
String strFirstDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, 1);// 設置當前月的1號
strFirstDay = sDateFormat.format(calendar.getTime());
return strFirstDay;
}
// 獲取當月最后一天
public String getLastDayOfMonth() {
String strLastDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, 1);// 設置當前月的1號
calendar.add(Calendar.MONDAY, 1);// 加一個月,變為下月的1號
calendar.add(Calendar.DATE, -1);// 減去一天,變為當前月的最后一天
strLastDay = sDateFormat.format(calendar.getTime());
return strLastDay;
}
// 獲取上月第一天
public String getFirstDayOfPreviousMonth() {
String strFirstDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, 1);// 設置當前月的1號
calendar.add(Calendar.MONDAY, -1);// 減一個月,變為上月的1號
strFirstDay = sDateFormat.format(calendar.getTime());
return strFirstDay;
}
// 獲取上月最后一天
public String getLastDayOfPreviousMonth() {
String strLastDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, 1);// 設置當前月的1號
calendar.add(Calendar.DATE, -1);// 減一天,變為上月的1號
strLastDay = sDateFormat.format(calendar.getTime());
return strLastDay;
}
public String getLastDayOfPreviousMonth2() {
String strLastDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONDAY, -1);// 減一個月
calendar.set(Calendar.DATE, 1);// 設置當前月的1號
calendar.roll(Calendar.DATE, -1);// 把日期回滾一天,也就是本月最后一天
strLastDay = sDateFormat.format(calendar.getTime());
return strLastDay;
}
// 獲取下月第一天
public String getFirstDayOfNextMonth() {
String strFirstDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);// 加一個月
calendar.set(Calendar.DATE, 1);// 設置當前月第一天
strFirstDay = sDateFormat.format(calendar.getTime());
return strFirstDay;
}
// 獲取下月最后一天
public String getLastDayOfNextMonth() {
String strLastDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DATE, 1);// 設置當前月的1號
calendar.add(Calendar.MONDAY, 2);// 加兩個月,變為下下月的1號
calendar.add(Calendar.DATE, -1);// 減一天,變為下月的最后一天
strLastDay = sDateFormat.format(calendar.getTime());
return strLastDay;
}
public String getLastDayOfNextMonth2(){
String strLastDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.MONTH, 1);// 加1個月
calendar.set(Calendar.DATE, 1);// 把日期設置為當月第1天
calendar.roll(Calendar.DATE, -1);// 日期回滾1天,也就是本月最后1天
strLastDay = sDateFormat.format(calendar.getTime());
return strLastDay;
}
// 獲取本年的第一天
public String getFirstDayOfYear(){
String strFirstDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, 1);// 設置當年第一天
strFirstDay = sDateFormat.format(calendar.getTime());
return strFirstDay;
}
// 獲取本年的最后一天
public String getLastDayOfYear(){
String strLastDay = "";
Calendar calendar = Calendar.getInstance();
strLastDay = calendar.get(Calendar.YEAR) + "-12-31";
return strLastDay;
}
// 獲取上年的第一天
public String getFirstDayOfPreviousYear(){
String strFirstDay = "";
Calendar calendar = Calendar.getInstance();
strFirstDay = (calendar.get(Calendar.YEAR) - 1) + "-01-01";
return strFirstDay;
}
// 獲取上年的最后一天
public String getLastDayOfPreviousYear(){
String strLastDay = "";
Calendar calendar = Calendar.getInstance();
strLastDay = (calendar.get(Calendar.YEAR) - 1) + "-12-31";
return strLastDay;
}
// 獲取下年的第一天
public String getFirstDayOfNextYear(){
String strFirstDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, 1);// 加一年
calendar.set(Calendar.DAY_OF_YEAR, 1);// 設置當年第一天
strFirstDay = sDateFormat.format(calendar.getTime());
return strFirstDay;
}
// 獲取下年的最后一天
public String getLastDayOfNextYear(){
String strLastDay = "";
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, 1);// 加一年
calendar.set(Calendar.DAY_OF_YEAR, 1);// 設置當年第一天
calendar.roll(Calendar.DAY_OF_YEAR, -1);// 回滾到當年最后一天
strLastDay = sDateFormat.format(calendar.getTime());
return strLastDay;
}
// 獲取本年的天數
public String getDaysOfYear(){
int year = 0;
int days = 0;
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.DAY_OF_YEAR, 1);// 設置日期為當年第一天
calendar.roll(Calendar.DAY_OF_YEAR, -1);// 把日期回滾一天
year = calendar.get(Calendar.YEAR);
days = calendar.get(Calendar.DAY_OF_YEAR);
return (days + " in " + year);
}
// 獲取當前月的季度
public String getSeasonOfMonth(){
String strSeason = "";
int year, month, day;
int season = 1;
int array[][] = new int[][]{ {1,2,3}, {4,5,6}, {7,8,9}, {10,11,12} };
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONDAY) + 1;
day = calendar.get(Calendar.DAY_OF_MONTH);
switch (month) {
case 1:
case 2:
case 3:
season = 1;
break;
case 4:
case 5:
case 6:
season = 2;
break;
case 7:
case 8:
case 9:
season = 3;
break;
case 10:
case 11:
case 12:
season = 4;
break;
default:
season = 1;
break;
}
int start_month = array[season-1][0];
int end_month = array[season-1][2];
strSeason = year + "-" + month + "-" +day;
strSeason += " in [ " + year + "-" + start_month + " : " + year + "-" + end_month + " ]";
return strSeason;
}
// 獲取當前天所在月份的天數
public String getLastDayOfNow(){
String strLastDay = "";
int year, month, day;
int days = 0;
Calendar calendar = Calendar.getInstance();
year = calendar.get(Calendar.YEAR);
month = calendar.get(Calendar.MONTH) + 1;
day = calendar.get(Calendar.DAY_OF_MONTH);
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
days = 31;
break;
case 4:
case 6:
case 9:
case 11:
days = 30;
break;
case 2:
if (isLeapYear(year)) {
days = 29;
} else {
days = 28;
}
break;
default:
days = 0;
break;
}
strLastDay = days + " in [ " + year + "-" + month + "-" + day + " ]";
return strLastDay;
}
// 判斷是否是潤年
public boolean isLeapYear(int year){
return (year%4 == 0 && year%100 != 0) || (year%400 == 0);
}
// 將字符串時間格式 yyyy-MM-dd,轉換成Date類型
public Date getDateFromStr(String txtDate) {
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
ParsePosition pos = new ParsePosition(0);
Date date = sDateFormat.parse(txtDate, pos);
return date;
}
// 根據一個日期,返回是星期幾的字符串
public String getWeek(String txtDate) {
Date date = getDateFromStr(txtDate);
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
String week = new SimpleDateFormat("EEEE").format(date);
return week;
}
// 計算兩個日期間的間隔天數
public long getDaysFromTwoDate(String txtDate1, String txtDate2) {
if(txtDate1 == null || txtDate1.equals("")) {
return 0;
}
if(txtDate2 == null || txtDate2.equals("")) {
return 0;
}
SimpleDateFormat sDateFormat = new SimpleDateFormat("yyyy-MM-dd");
long days = 0;
try {
Date date1 = sDateFormat.parse(txtDate1);
Date date2 = sDateFormat.parse(txtDate2);
days = (date2.getTime() - date1.getTime())/(24*60*60*1000);// 通過getTime()方法,把時間Date轉換成毫秒格式Long類型,進行計算
} catch (Exception e) {
System.out.println(e.getMessage());
}
return days;
}
}
運行結果:
當前日期:
2012-03-07
2012-03-07 12:30:11
2012-3-7 12:30:11.101
計算周:
-3
3/5/12 12:30 PM
3/10/12 12:30 PM
3/12/12 12:30 PM
3/3/12 12:30 PM
計算月:
2012-03-01
2012-03-31
2012-02-01
2012-02-29
2012-04-01
2012-04-30
計算年:
2012-01-01
2012-12-31
2011-01-01
2011-12-31
2013-01-01
2013-12-31
366 in 2012
計算季度:
2012-3-7 in [ 2012-1 : 2012-3 ]
31 in [ 2012-3-7 ]
true
日期格式轉換與計算:
Wed Jun 20 00:00:00 CST 2012
Wednesday
2012-06-02 -> 2012-06-12間隔天數:10
參考推薦:
總結
以上是生活随笔為你收集整理的java date 实例_Java Date 和 Calendar 实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: etmvc mysql乱码_Etmvc学
- 下一篇: 虚拟地址内存布局