目录
日期时间
1. Date 类
常用方法
示例
思考:
2. SimpleDateFormat 类
常用方法
常用日期格式
示例
3. Calendar 类
常用静态字段
常用方法
示例
日期时间
1. Date 类
常用方法
public Date (); // 无参构造,表示计算机系统当前时间,精确到毫秒public Date ( long date ); // 带参构造,表示根据给定的时间数字来构建一个日期对象,精确到毫秒public long getTime (); // 获取日期对象中的时间数字,精确到毫秒public boolean before ( Date when ); // 判断当前对象表示的日期是否在给定日期之前public boolean after ( Date when ); // 判断当前对象表示的日期是否在给定日期之后
示例
import java . util . Date ;public class DateTest {public static void main ( String [] args ) {Date now = new Date ();System . out . println ( now );//时间单位一般是毫秒,当然更精确的是纳秒long currentTime = System . currentTimeMillis () - 24 * 60 * 60 * 1000 ;Date date = new Date ( currentTime );System . out . println ( date );System . out . println ( date . getTime ());boolean before = now . before ( date ); //falseboolean after = now . after ( date ); //trueSystem . out . println ( before );System . out . println ( after );}}
思考:
打印的日期不好看懂,能否按照我们熟悉的方式来打印?
当然可以,首先我们需要将日期按照我们熟悉的日期格式转换为一个字符串日期,然后再打印。
2. SimpleDateFormat 类
常用方法
public SimpleDateFormat ( String pattern ); // 根据给定的日期格式构建一个日期格式化对象public final String format ( Date date ); // 将给定日期对象进行格式化public Date parse ( String source ) throws ParseException ; // 将给定的字符串格式日期解析为日期对象
常用日期格式
字母 | 含义 | 说明 |
y | 年 year | 不区分大小写,一般用小写 |
M | 月 month | 区分大小写,只能使用大写 |
d | 日 day | 区分大小写,只能使用小写 |
H | 时 hour | 不区分大小写,一般用大写 |
m | 分 minute | 区分大小写,只能使用小写 |
s | 秒 second | 区分大小写,只能使用小写 |
示例
import java . text . ParseException ;import java . text . SimpleDateFormat ;import java . util . Date ;public class DateFormatTest {public static void main ( String [] args ) {Date now = new Date ();// yyyy-MM-dd HH:mm:ss yyyy/MM/dd HH:mm:ssSimpleDateFormat format = new SimpleDateFormat ( "yyyy 年 MM 月 dd 日 HH 时 mm分 ss 秒 " );String dateStr = format . format ( now );System . out . println ( dateStr );String s = "2000-01-01 12:01:50" ;SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" );try {Date date = sdf . parse ( s );System . out . println ( date );} catch ( ParseException e ) {e . printStackTrace ();}}}
3. Calendar 类
常用静态字段
常用方法
public static Calendar getInstance (); // 获取日历对象public final Date getTime (); // 获取日历表示日期对象public final void setTime ( Date date ); // 设置日历表示的日期对象public int get ( int field ); // 获取给定的字段的值public void set ( int field , int value ); // 设置给定字段的值public void roll ( int field , int amount ); // 根据给定的字段和更改数量滚动日历public int getActualMaximum ( int field ); // 获取给定字段的实际最大数量
示例
import java . text . SimpleDateFormat ;import java . util . Calendar ;import java . util . Date ;public class CalendarTest {public static void main ( String [] args ) {//获取一个日历对象,默认就是系统当前时间Calendar c = Calendar . getInstance ();Date date = c . getTime ();SimpleDateFormat sdf = new SimpleDateFormat ( "yyyy-MM-dd HH:mm:ss" );System . out . println ( sdf . format ( date ));long time = System . currentTimeMillis () - 3 * 24 * 60 * 60 * 1000 ;Date before = new Date ( time );c . setTime ( before ); // 设置时间到 3 天前c . set ( Calendar . YEAR , 2019 ); // 设置年份为 2020 年c . set ( Calendar . MONTH , 1 ); // 设置月份c . roll ( Calendar . DAY_OF_MONTH , - 1 ); // 天数 -1int year = c . get ( Calendar . YEAR ); // 获取年份System . out . println ( year );int month = c . get ( Calendar . MONTH ); // 获取月份System . out . println ( month );int day = c . get ( Calendar . DAY_OF_MONTH ); // 获取一个月中的第几天System . out . println ( day );int hour = c . get ( Calendar . HOUR_OF_DAY ); // 获取小时 (24)System . out . println ( hour );int minute = c . get ( Calendar . MINUTE ); // 获取分钟System . out . println ( minute );int second = c . get ( Calendar . SECOND ); // 获取秒System . out . println ( second );int maxDays = c . getActualMaximum ( Calendar . DAY_OF_MONTH ); // 获取月份的最大天数System . out . println ( maxDays );}}