Date
日期和时间
构造器
构造器 | 说明 |
---|---|
public Date() | 创建一个Date对象,代表系统此刻日期时间 |
public Date(long time) | 把时间毫秒值转换成Date日期对象 |
常见方法
方法名 | 说明 |
---|---|
public long getTime() | 返回从1970年1月1日 00:00:00 到此刻的总毫秒数 |
public void setTime(long time) | 设置日期对象的时间为当前时间毫秒值对应的时间 |
案例演示
public class DateTest {
public static void main(String[] args) {
//创建一个Date对象,代表系统当前时间信息
Date d = new Date();
System.out.println(d);
//Date获取时间戳
System.out.println("-------------------");
System.out.println(d.getTime());
//System获取时间戳
System.out.println("-------------------");
System.out.println(System.currentTimeMillis());
//时间戳转换成日期
System.out.println("-------------------");
System.out.println(new Date(d.getTime()));
//setTime(long time)
System.out.println("-----------------");
long time = d.getTime() + 1000000 * 1000; //当前时刻+100w秒
Date d2 = new Date();
d2.setTime(time);
System.out.println(d2);
}
}
SimpleDateFormat
简单日期格式化,用来把日期对象、时间戳格式化成日期格式
常见构造器 | 说明 |
---|---|
public SimpleDateFormat(String pattern) | 创建简单日期格式化对象,并封装时间的格式 |
格式化时间的方法 | 说明 |
---|---|
public final String format(Date date) | 将日期格式化成日期/时间字符串 |
public final Striong format(Object time) | 将时间戳格式化成日期/时间字符串 |
SimpleDateFormat解析字符串时间成为日期对象
解析方法 | 说明 |
---|---|
public Date parse(String source) | 把字符串时间解析成日期对象 |
案例演示
public class SimpleDateFormatTest {
public static void main(String[] args) throws ParseException {
Date d = new Date();
System.out.println(d);
System.out.println("-----------------");
long time = d.getTime();
System.out.println(time);
//格式化日期对象和时间戳
System.out.println("-----------------");
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss EEE a");
String date1 = simpleDateFormat.format(d);
System.out.println(date1);
//解析字符串时间成日期对象
System.out.println("-------------------");
String dateStr = "2024-5-20 05:20:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date d1 = sdf.parse(dateStr);
System.out.println(d1);
}
}
parttern字符串详解
字符 | 含义 | 详解 |
---|---|---|
y / yy / yyyy | 年份 | y:不带前导零的年(如24);yy:两位数的年(如01,23);yyyy:四位数完整年份(如2024) |
M / MM / MMM / MMMM | 月份 | M:M:不带前导零的月份数字(1-12);MM:带有前导零的月份数字(01-12);MMM:简写月份名(Jan-Dec);MMMM:全称月份名(January-December) |
d / dd | 日期 | d:不带前导零的天数(1-31);dd:带有前导零的天数(01-31) |
H / HH | 24小时制小时数 | H:不带前导零的小时数(0-23);HH:带有前导零的小时数(00-23) |
s / ss | 秒 | s:不带前导零的秒数(0-59);ss:带有前导零的秒数(00-59) |
其他参数由于方法过时就不过多介绍
Calendar
Calendar代表系统此刻时间对应的日历
通过它可以单独获取、修改时间中的年、月、日、时、分、秒等
Calendar常见方法
方法名 | 说明 |
---|---|
public static Calendar getInstance() | 获取当前日历对象 |
public int get(int field) | 获取日历中的某个信息 |
public final Date getTime() | 获取日期对象 |
public long getTimeInMillis() | 获取时间戳 |
public void set(int field, int value) | 修改日历的某个信息 |
publi void add(int field, int amount) | 为某个信息增加/减少指定的值 |
案例演示
public class CalendarTest1 {
public static void main(String[] args) {
//得到系统此刻时间对应的日历对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//拿到日历中记录的日期对象
System.out.println("-------------------");
Date date = calendar.getTime();
System.out.println(date);
//获取时间戳
long MillisTime = calendar.getTimeInMillis();
System.out.println(MillisTime);
//修改日历的某个信息
System.out.println("-------------------");
calendar.set(Calendar.YEAR, 2025);
System.out.println(calendar.get(Calendar.YEAR));
//为某信息增加/减少指定的值
System.out.println("-------------------");
calendar.add(Calendar.YEAR, -1); //年份-1
System.out.println(calendar.get(Calendar.YEAR));
calendar.add(Calendar.YEAR, 99); //年份+99
System.out.println(calendar.get(Calendar.YEAR));
}
}
Calendar字段详解
字段 | 说明 |
---|---|
YEAR | 年份 |
MONTH | 月份,Calendar中,月份从0开始计数,0表示1月,1表示2月,依此类推 |
DAY_OF_MONTH | 一个月中的某一天(1-31,号数) |
DAY_OF_WEEK | 一周中的某一天,从Sunday(1)到Saturday(7) |
DAY_OF_WEEK_IN_MONTH | 当前月中的第几个星期几 |
DAY_OF_YEAR | 当前年份中的第几天(1-366) |
WEEK_OF_MONTH | 当前月中的第几周 |
WEEK_OF_YEAR | 当前年份中的第几周 |
AM_PM | 表示一天中的上午/下午时段,0代表上午(AM),1代表下午(PM) |
HOUR | 12小时制的小时数(0-11,中午12点也用0表示) |
HOUR_OF_DAY | 24小时制的小时数(0-23) |
MINUTE | 分钟数(0-59) |
SECOND | 秒数(0-59) |
MILLISECOND | 毫秒数(0-999) |
案例演示
public class CalendarTest2 {
public static void main(String[] args) {
//得到系统此刻时间对应的日历对象
Calendar calendar = Calendar.getInstance();
System.out.println(calendar);
//获取日历中的年
System.out.println("-------年-------");
int year = calendar.get(Calendar.YEAR);
System.out.println(year);
//获取日历中的月
System.out.println("-------月-------");
int month = calendar.get(Calendar.MONTH + 1); //Calendar中,月份从0开始计数,真实月份需在返回的结果上再加1
System.out.println(month);
//获取日历中的号数
System.out.println("-------日-------");
int day = calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(day);
//获取星期几的数据
System.out.println("-------星期几-------");
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK); //Sunday为1,Saturday为7
switch (dayOfWeek) {
case 1:
System.out.println("星期天");
break;
case 2:
System.out.println("星期一");
break;
case 3:
System.out.println("星期二");
break;
case 4:
System.out.println("星期三");
break;
case 5:
System.out.println("星期四");
break;
case 6:
System.out.println("星期五");
break;
case 7:
System.out.println("星期六");
break;
}
System.out.println("-------当月第几个星期几-------"); //星期几为获取参数
int dayOfWeekInMonth = calendar.get(Calendar.DAY_OF_WEEK_IN_MONTH);
System.out.println(dayOfWeekInMonth); //比如今天是2024.2.20,即今天是2024年2月的第3个星期二
System.out.println("-------今年的第多少天-------");
int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);
System.out.println(dayOfYear);
System.out.println("-------当前月的第多少周-------");
int weekOfMonth = calendar.get(Calendar.WEEK_OF_MONTH);
System.out.println(weekOfMonth);
System.out.println("-------当前年份的第多少周-------");
int weekOfYear = calendar.get(Calendar.WEEK_OF_YEAR);
System.out.println(weekOfYear);
System.out.println("-------上午/下午-------");
String status = "";
int AMPM = calendar.get(Calendar.AM_PM); //返回0或1,0代表上午,1代表下午
switch (AMPM) {
case 0:
status = "上午";
break;
case 1:
status = "下午";
break;
}
System.out.println(status);
System.out.println("-------12制小时数-------");
int hour = calendar.get(Calendar.HOUR);
System.out.println(status + hour + "点");
System.out.println("-------24制小时数-------");
int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
System.out.println(hourOfDay);
System.out.println("-------分钟数-------");
int minute = calendar.get(Calendar.MINUTE); //0-59
System.out.println(minute);
System.out.println("-------秒数-------");
int second = calendar.get(Calendar.SECOND); //0-59
System.out.println(second);
System.out.println("-------毫秒数-------"); //0-999
int millisecond = calendar.get(Calendar.MILLISECOND);
System.out.println(millisecond);
System.out.println("-------完整时间-------");
System.out.println(year + "年" + month + "月" + day + "日"
+ hourOfDay + "点" + minute + "分" + second + "秒");
}
}
注: JDK8之后Date类的许多方法已经过时