一、時間的格式化:可以用時間類SimpleDateFormat 和抽象類 DateFormat。
1、SimpleDateFormat類的使用:
import java.util.Date;
import java.text.SimpleDateFormat;
public class testDate{
public static void main(String[] args){
Date nowTime = new Date();
//format millisec
SimpleDateFormat time1 = new SimpleDateFormat("EE-yyyy-MM-dd-hh-mm-ss");
System.out.println("before formatting: "+nowTime);
System.out.println("after formatting: "+time1.format(nowTime));
}
}
結果:
before formatting: Wed Aug 24 16:58:03 CST 2016
after formatting: 星期三-2016-08-24-04-58-03
2、DateFormat類的使用:
import java.util.Date;
import java.text.DateFormat;
public class testDate {
public static void main(String[] args) {
Date nowTime = new Date();
// four kinds of instance of DateFormat
// short
DateFormat shortDateFormat = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
System.out.println(shortDateFormat.format(nowTime));
// medium
DateFormat mediumDateFormat = DateFormat.getDateTimeInstance(DateFormat.MEDIUM, DateFormat.MEDIUM);
System.out.println(mediumDateFormat.format(nowTime));
// long
DateFormat longDateFormat = DateFormat.getDateTimeInstance(DateFormat.LONG, DateFormat.LONG);
System.out.println(longDateFormat.format(nowTime));
// full
DateFormat fullDateFormat = DateFormat.getDateTimeInstance(DateFormat.FULL, DateFormat.FULL);
System.out.println(fullDateFormat.format(nowTime));
}
}
結果:
16-8-25 下午3:52
2016-8-25 15:52:43
2016年8月25日 下午03時52分43秒
2016年8月25日 星期四 下午03時52分43秒 CST
二、時間解析
假設有一個文本字元串包含固定格式的日期對象,我們期待得到這的時間對象的毫秒形式以重塑格式。這樣從固定格式的日期對象中得到毫秒數的過程稱為時間解析。
在此過程中需要用到java.util.Date 類
import java.util.Date;
import java.text.SimpleDateFormat;
public class testDate {
public static void main(String[] args) {
SimpleDateFormat time = new SimpleDateFormat("MM-dd-yyyy");
String dateStringToParse = "08-24-2016";
try {
Date parsedDate = time.parse(dateStringToParse);
System.out.println("parsed date: "+parsedDate.getTime());
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
或者(*)
import java.util.Date;
import java.text.SimpleDateFormat;
public class testDate {
public static void main(String[] args) {
//SimpleDateFormat time = new SimpleDateFormat(“yyyy-MM-dd”);
String dateStringToParse = “2016-08-24”;
try {
//Date parsedDate = time.parse(dateStringToParse);
Date parsedDate=(new SimpleDateFormat(“yyyy-MM-dd”).parse(dateStringToParse));
System.out.println(“parsed date: “+parsedDate.getTime());
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
結果:
parsed date: 1471968000000
三、時間計算
有時候我們需要對時間進行計算,這是我們需要用到Calendar類,Calendar類中的方法替代了Date類中被人唾棄的方法。
jdk中正常的年月日時分秒:
static int YEAR
訓示年的 get 和 set 的字段數字。
static int MONTH
訓示月份的 get 和 set 的字段數字。
static int DATE
get 和 set 的字段數字,訓示一個月中的某天。
static int HOUR
get 和 set 的字段數字,訓示上午或下午的小時。
static int MINUTE
get 和 set 的字段數字,訓示一小時中的分鐘
static int SECOND
get 和 set 的字段數字,訓示一分鐘中的秒。
比較有用的幾個字段:
static int DAY_OF_YEAR
get 和 set 的字段數字,訓示目前年中的天數。
static int WEEK_OF_YEAR
get 和 set 的字段數字,訓示目前年中的星期數。
static int WEEK_OF_MONTH
get 和 set 的字段數字,訓示目前月中的星期數。
static int DAY_OF_WEEK
get 和 set 的字段數字,訓示一個星期中的某天。
例子:計算某一個日期加一段時間之後得到的日期
public class testDate {
public static void main(String[] args) {
//SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd");
String dateStringToParse = "2016-08-14";
Date parsedDate=new Date();
try {
//Date parsedDate = time.parse(dateStringToParse);
parsedDate=(new SimpleDateFormat("yyyy-MM-dd").parse(dateStringToParse));
System.out.println("parsed date: "+parsedDate.getTime());
} catch (Exception ex) {
System.out.println(ex.getMessage());
}
Calendar cal =Calendar.getInstance();
cal.setTime(parsedDate);
cal.add(Calendar.DATE, );
SimpleDateFormat df= new SimpleDateFormat("yyyy-MM-dd");
System.out.println("pulse 10 days: "+df.format(cal.getTime()));
}
}
parsed date: 1471104000000
pulse 10 days: 2016-08-24
附SimpleDateFormat的構造函數中String 中的字元串含義:
Letter Date or Time Component Presentation Examples
G Era designator Text AD
y Year Year 1996; 96
M Month in year Month July; Jul; 07
w Week in year Number 27
W Week in month Number 2
D Day in year Number 189
d Day in month Number 10
F Day of week in month Number 2
E Day in week Text Tuesday; Tue
a Am/pm marker Text PM
H Hour in day (0-23) Number 0
k Hour in day (1-24) Number 24
K Hour in am/pm (0-11) Number 0
h Hour in am/pm (1-12) Number 12
m Minute in hour Number 30
s Second in minute Number 55
S Millisecond Number 978
z Time zone General time zone Pacific Standard Time; PST; GMT-08:00
Z Time zone RFC 822 time zon
References:
java時間格式化處理
java Calendar類