1. 程式人生 > >JAVA:Date 時間類

JAVA:Date 時間類

獲取當前時間時間戳:

Date date = new Date();
long timestamp = date.getTime(); //1970.01.01 00:00:00 GMT 以來此 Date 物件表示的毫秒數

Date中大多方法都過時,改用java.util.Calendar

Calendar rightNow = Calendar.getInstance();  //獲取當前日曆
long timestamp = rightNow.getTimeInMillis(); //獲取時間戳

Calendar類獲取或設定時間用get和set方法

cal.get(Calendar.
YEAR); cal.set(Calendar.DAY_OF_MONTH, 12);

Date和Calendar相互轉換

cal.setTime(date);
date = cal.getTime();

String轉換為Date:

String date_str = "2016-03-28 16:20:00";
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(date_str);

Date轉為固定格式的String:

Date date = new Date();  
String date_str =
(new SimpleDateFormat("yyyy-MM-dd")).format(date);

時間戳long到String的轉換同上

SimpleDateFormat函式語法:

G 年代標誌符
y 年
M 月
d 日
h 時 在上午或下午 (1~12)
H 時 在一天中 (0~23)
m 分
s 秒
S 毫秒
E 星期
D 一年中的第幾天
F 一月中第幾個星期幾
w 一年中第幾個星期
W 一月中第幾個星期
a 上午 / 下午 標記符
k 時 在一天中 (1~24)
K 時 在上午或下午 (0~11)
z 時區

獲取指定周或指定月第一天
設定日期、固定日期增減時間後的日期,獲取日期為當前周、月第幾天

private Calendar getMondayOfWeek(Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    //返回所在周第幾天:週一返回1,週二返回2...
    int day_of_week = c.get(Calendar.DAY_OF_WEEK) - 1;
    if (day_of_week == 0)
        day_of_week = 7;
    //當前日期的Calendar.DATE增加1-day_of_week後的日期,Calendar.DATE表示日欄位,也就是把c增加1-day_of_week天
    c.add(Calendar.DATE, 1-day_of_week);
    return c;
}
//返回引數所在月的第一天
private Calendar getFirstDateOfMonth(Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    //返回所在月第幾天:1日返回1,2日返回2...   
    int day_of_month = c.get(Calendar.DAY_OF_MONTH);
    c.add(Calendar.DATE, 1 - day_of_month);
    return c;
}