date SimpleDateFormat Calendar等几种时间日期类的简略分析

Calendar类

这是一个对时间操作的类

该类是一个abstract类,提供了getInstance方法来实例化Calendar类 :Calendar rightNow = Calendar.getInstance();

public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH)+1;
        int day = cal.get(Calendar.DAY_OF_MONTH);
        int week = cal.get(Calendar.WEEK_OF_MONTH);
        String weeks ="";
        switch (week) {
        case 1:weeks="星期天";
            break;
        case 2:weeks="星期一";
        break;
        case 3:weeks="星期二";
        break;
        case 4:weeks="星期三";
        break;
        case 5:weeks="星期四";
        break;
        case 6:weeks="星期五";
        break;
        default:weeks="星期六";
        break;
        }
         int hour = cal.get(Calendar.HOUR_OF_DAY);//24小时制
//         int h1 = cal.get(Calendar.HOUR);//12小时制
         int minute = cal.get(Calendar.MINUTE);
         int second = cal.get(Calendar.SECOND);
         String h,m,s; 
         if(hour<10) h = "0"+hour; else h = hour+""; 
         if(minute<10) m = "0"+minute; else m = minute+""; 
         if(second<10) s = "0"+second; else s = second+"";
         
        
    }

输出:今天是: 2018年12月14日星期五 05:35:26

add

public abstract void add(int field,
                         int amount)

根据日历的规则,为给定的日历字段添加或减去指定的时间量。例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点:

add(Calendar.DAY_OF_MONTH, -5)

public final void set(int year, int month, int date, int hourOfDay, int minute)

设置日历字段 YEAR、 MONTH、 DAY_OF_MONTH、 HOUR_OF_DAY 和 MINUTE 的值。保留其他字段以前的值。如果不需要这样做,则先调用 clear()

参数:

year - 用来设置 YEAR 日历字段的值。

month - 用来设置 MONTH 日历字段的值。Month 值是基于 0 的。例如,0 表示 January。

date - 用来设置 DAY_OF_MONTH 日历字段的值。

hourOfDay - 用来设置 HOUR_OF_DAY 日历字段的值。

minute - 用来设置 MINUTE 日历字段的值。

参数:

field - 日历字段。

amount - 为字段添加的日期或时间量。

date类

两个构造方法:

Date(): 分配 Date 对象并初始化此对象,以表示分配它的时间(精确到毫秒)

            相当于System.currentTimeMillis()

Date(long date):分配 Date 对象并初始化此对象,以表示自从标准基准时间(称为“历元(epoch)”,即 1970                              年 1 月 1 日 00:00:00 GMT)以来的指定毫秒数。

其他方法:

System.currentTimeMillis():获取当前的时间戳,该时间是从1970年到现在的毫秒戳

getTime():返回自1970年1月1号以来Date对象表示 的毫秒值

setTime():  设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。

compareTo(Date t){

当前对象和t比较

当前对象大,返回正数

当前对象小,返回负数

相等,返回0

}

        public static void main(String[] args) {
        Date date1 = new Date();
        Date date2 = new Date(100000000000L);
        SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd");
        //设置毫秒值
        date1.setTime(15447907409690L);
        //getTime方法返回一个long类型的毫秒值
        long time = date1.getTime();
        System.out.println(time);

       //sf对象的方法
        String d = sf.format(date1);
        String s = sf.format(date2);


        System.out.println(date1);
        System.out.println(date2);
        System.out.println(d);
        System.out.println(s);
    }                    

 

SimpleDateFormat类

是一个以与语言环境有关的方式来格式化和解析日期的具体类

简单来说就是日期格式工具类

创建对象

new SimpleDateFormat("yyyy-MM-dd")|||  构造方法中有很多格式,详情可以查看API

方法

format(Date date, StringBuffer toAppendTo, FieldPosition pos) 

将给定的 Date 格式化为日期/时间字符串,并将结果添加到给定的 StringBuffer

date - 要被格式化为日期-时间字符串的日期-时间值。

toAppendTo - 新的日期-时间文本被添加的位置。

pos - 格式化的位置。输入时:如果需要,是一个对齐字段。输出时:为对齐字段的偏移量。

parse(Stirng s)

将一个按照SimpleDateFormat的格式的String数据转换成date类型

topattern()

返回描述此日期格式的模式字符串。如返回yyyy-MM-dd;

    private static long f(String date) throws ParseException {
          SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
          SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd:HH:mm:ss");
          Date ss = sdf.parse(date);
          String format = sdf1.format(new Date());
          System.out.println(format);
          System.out.println(ss);
          long t = ss.getTime()-System.currentTimeMillis();
          t= t/1000/60/60/24;
          return t;
  }       

猜你喜欢

转载自blog.csdn.net/weixin_42345223/article/details/85009013