一、时间的格式化:可以用时间类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类