14.1 Date类
java.util.Date 类表示特定的瞬间,精确到秒。
常用构造方法:
Date();使用系统当前的时间创建 一个Date实例,内部就是使用System. currentTimeMillis()获取系统当前时间的毫秒数来创建Date对象。
Date(long dt); 使用自1970年1月1日00:00:00 GMT以来的指定毫秒数创建 一个Date实例
常用方法:
getTime();返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
toString() 把此 Date 对象转换为以下形式的 String:
Sun Feb 12 10:06:43 GMT+08:00 2017
注:Date 类中的方法API不易于实现国际化,大部分被废弃了。
14.2 Calendar类
Calendar(日历)类是一个抽象基类,主要用于完成日期字段之间相互操作的功能。即可以设置和获取日期数据的特定部分。
获取Calendar类的实例的方法:
使用Calendar.getInstance();
调用它的子类GregorianCalendar的构造方法
常用方法:
public int get(int field); 根据给定的日历字段获得当前时间中相应字段的值。如:年、月、日,时、分、秒等;
(注意:源码中月份是从0开始的,一月份值是0,十二月份值是11;星期是从星期日开始的,星期日值为1,星期六值为7)
public final void setTime(Date date); 定位日历到指定的时间。
public final void setTimeMillis(long millis); 定位日历到指定的时间。
c.getActualMaximum(Calendar.DATE);获取当前日期所在月份的天数
public static void main(String[] args) { Calendar c = Calendar.getInstance(); int year = c.get(Calendar.YEAR); int month = c.get(Calendar.MONTH)+1;//月份是从0开始的 int day = c.get(Calendar.DAY_OF_MONTH); int hour = c.get(Calendar.HOUR_OF_DAY); int minute = c.get(Calendar.MINUTE); int second = c.get(Calendar.SECOND); int week = c.get(Calendar.DAY_OF_WEEK)-1;//星期是从星期天开始,星期天=1 System.out.println("现在是北京时间:"+year+"年"+month+"月"+day+"日"+hour+"时"+minute+"分"+second+"秒 星期"+week); System.out.println("最大的一天:"+c.getMaximum(Calendar.DATE)); System.out.println("月份中最大的一个月:"+c.getMaximum(Calendar.MONTH));//值为11,即12月份 }
14.3 SimpleDateFormat类
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。
它允许进行格式化(时间 -> 文本)、解析(文本 -> 日期)和规范化。
时间 -> 文本:
```java Date date = new Date(1486866084000L); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒", Locale.CHINA); String result = simpleDateFormat.format(date);//格式化时间 System.out.println(result); //将输出:2017年02月12日 10时21分24秒 E:代表星期,会直接输出星期几 常用格式:(完整的)yyyy-MM-dd HH:mm:ss E
yyyy年MM月dd日 HH:mm:ss E yyyy可以省略写一个y,其他的当只写一个字母时,若为01它就直接显示1
Date date = new Date(1486866084000L); SimpleDateFormat simpleDateFormat = new SimpleDateFormat(); sdf.applyPattern("yyyy年MM月dd日 HH时mm分ss秒");//知道applyPattern();这个方法 String result = sdf.format(date);
* 文本 -> 时间:
```java
String time = "2017年02月12日 10时21分24秒";
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒", Locale.CHINA);
Date result = simpleDateFormat.parse(time);//解析文本,(格式不对解释会异常,此处需要处理异常)
System.out.println(result.getTime());
//将输出:1486866084000
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class DateUtils {
public static final String PATTERN1 = "yyyy年MM月dd";
public static final String PATTERN2 = "yyyy年MM月dd HH:mm:ss";
public static String long2String(long time, String pattern) {
return new SimpleDateFormat(pattern).format(new Date(time));
}
public static String long2String(long time) {
return long2String(time, PATTERN1);
}
public static long string2Long(String s, String pattern) throws ParseException {
return new SimpleDateFormat(pattern).parse(s).getTime();
}
public static long string2Long(String s) throws ParseException {
return string2Long(s, PATTERN1);
}
}