一、Date类
Date类返回的是从1970年1月1日00:00:00格林威治时间以后返回的毫秒数。
二、Calendar类
Calendar类是一个抽象类,有专门的方法来表示,如:YEAR、MONTH、DAY_OF_MONTH、HOUR。
下面是一个通过Calendar类获取日期的例子:
package date_calendar;
import java.util.Calendar;
import java.util.Date;
public class Calendar1 {
// Calendar类得到年月日
public static void main(String[] args) {
Calendar cal = Calendar.getInstance();
// 获取年
int year = cal.get(Calendar.YEAR);
// 获取月份,月份是从0开始的
int month = cal.get(Calendar.MONTH) + 1;
// 获取日
int day = cal.get(Calendar.DAY_OF_MONTH);
// 时
int hour = cal.get(Calendar.HOUR_OF_DAY);
// 分
int minute = cal.get(Calendar.MINUTE);
// 秒
int second = cal.get(Calendar.SECOND);
// 获取星期,1代表星期日,2代表星期一
int week = cal.get(Calendar.DAY_OF_WEEK);
int week2 = cal.get(Calendar.DAY_OF_WEEK_IN_MONTH);// 当前月中的第几个星期--3
int week3 = cal.get(Calendar.DAY_OF_YEAR);// 当前年中的第几个星期--80
// 2017年3月21日2:43:39星期二
System.out.println(year + "年" + month + "月" + day + "日" + hour + ":"
+ minute + ":" + second + changeWeek(week));
// 设置时间, 设置为2015年
cal.set(Calendar.YEAR, 2015);
// 设置时间, 设置为30号
cal.set(Calendar.DAY_OF_MONTH, 30);
int year2 = cal.get(Calendar.YEAR);
int day2 = cal.get(Calendar.DAY_OF_MONTH);
int week4 = cal.get(Calendar.DAY_OF_WEEK);
System.out.println(year2 + "年" + month + "月" + day2 + "日" + hour + ":"
+ minute + ":" + second + changeWeek(week4));
}
static String changeWeek(int _week) {
String str = "";
switch (_week) {
case 1:
str = "星期日";
break;
case 2:
str = "星期一";
break;
case 3:
str = "星期二";
break;
case 4:
str = "星期三";
break;
case 5:
str = "星期四";
break;
case 6:
str = "星期五";
break;
case 7:
str = "星期六";
break;
default:
System.out.println("错误的日期。");
break;
}
return str;
}
}
//结果
//2017年3月21日3:4:26星期二
//2015年3月30日3:4:26星期一
三、SimpleDateFormat类
字母 | 日期或时间元素 | 表示 | 示例 |
---|---|---|---|
G | Era 标志符 | Text | AD |
y | 年 | Year | 1996 ; 96 |
M | 年中的月份 | Month | July ; Jul ; 07 |
w | 年中的周数 | Number | 27 |
W | 月份中的周数 | Number | 2 |
D | 年中的天数 | Number | 189 |
d | 月份中的天数 | Number | 10 |
F | 月份中的星期 | Number | 2 |
E | 星期中的天数 | Text | Tuesday ; Tue |
a | Am/pm 标记 | Text | PM |
H | 一天中的小时数(0-23) | Number | 0 |
k | 一天中的小时数(1-24) | Number | 24 |
K | am/pm 中的小时数(0-11) | Number | 0 |
h | am/pm 中的小时数(1-12) | Number | 12 |
m | 小时中的分钟数 | Number | 30 |
s | 分钟中的秒数 | Number | 55 |
S | 毫秒数 | Number | 978 |
z | 时区 | General time zone | Pacific Standard Time ; PST ; GMT-08:00 |
Z | 时区 | RFC 822 time zone | -0800 |
package date_calendar;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class SimpleDateFormat1 {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yy-MM-dd hh:mm:ss W");
// 将date对象解析成字符串
String str = sdf.format(new Date());
System.out.println(str);
String s = "17-03-21 03:26:49 4";
// 将字符串对象解析成date对象
Date d = sdf.parse(s);
System.out.println(d);
//DateFormat类
DateFormat df = DateFormat.getDateInstance(DateFormat.LONG,Locale.CHINA);
System.out.println(df.format(new Date()));//2017年3月21日
}
}
// 17-03-21 03:30:54 4
// Tue Mar 21 03:26:49 CST 2017
//2017年3月21日
四、DateFormat类
DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。日期/时间格式化子类(如 SimpleDateFormat)允许进行格式化(也就是日期 -> 文本)、解析(文本-> 日期)和标准化。将日期表示为Date
对象,或者表示为从 GMT(格林尼治标准时间)1970 年 1 月 1 日 00:00:00 这一刻开始的毫秒数。