获取当前时间时间戳:
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;
}