14.1 Date类

java.util.Date 类表示特定的瞬间,精确到秒。

常用构造方法:

  1. Date();使用系统当前的时间创建 一个Date实例,内部就是使用System. currentTimeMillis()获取系统当前时间的毫秒数来创建Date对象。

  2. Date(long dt); 使用自1970年1月1日00:00:00 GMT以来的指定毫秒数创建 一个Date实例

常用方法:

  1. getTime();返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。

  2. toString() 把此 Date 对象转换为以下形式的 String:

    Sun Feb 12 10:06:43 GMT+08:00 2017

注:Date 类中的方法API不易于实现国际化,大部分被废弃了。

14.2 Calendar类

Calendar(日历)类是一个抽象基类,主要用于完成日期字段之间相互操作的功能。即可以设置和获取日期数据的特定部分。

获取Calendar类的实例的方法:

  1. 使用Calendar.getInstance();

  2. 调用它的子类GregorianCalendar的构造方法

常用方法:

  1. public int get(int field); 根据给定的日历字段获得当前时间中相应字段的值。如:年、月、日,时、分、秒等;

    (注意:源码中月份是从0开始的,一月份值是0,十二月份值是11;星期是从星期日开始的,星期日值为1,星期六值为7)

  2. public final void setTime(Date date); 定位日历到指定的时间。

  3. public final void setTimeMillis(long millis); 定位日历到指定的时间。

  4. 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);
    }
}

results matching ""

    No results matching ""