Java常用类Date、Calendar、SimpleDateFormat详解

Date类

     java.util 包提供了 Date 类来封装当前的日期和时间,Date 类提供两个构造函数来实例化 Date 对象

  • 第一个构造函数使用当前日期和时间来初始化对象   Date( )
  • 第二个构造函数接收一个参数,该参数是从1970年1月1日起的毫秒数  Date(long millisec)
package com.yyx.util;

import java.util.Date;

/**
 * 日期时间工具类
 * 
 * @author yyx 2018年6月25日
 */
public class DateUtil {
    public static void main(String[] args) {
        testDate();
    }

    /**
     * Date类的其他方法都已过时,被替代
     */
    public static void testDate() {
       Date date=new Date();
       System.out.println(date.toString());
       
       //getTime() 返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数
       long currentTime=date.getTime();
       System.out.println(currentTime);
       
       //设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点
       date.setTime(currentTime+1530367288365L);
       System.out.println(date.toString());
       
       long time=System.currentTimeMillis();
       Date dateAnother=new Date(time);
       System.out.println(dateAnother.toString());
    }
}

 Calendar类

     Calendar是一个抽象类,不能直接实例化,但是Calendar类提供一个工厂方法,即getInstance来创建一个Calendar实例

package com.yyx.util;

import java.util.Calendar;
import java.util.Date;

/**
 * 日期时间工具类
 * 
 * @author yyx 2018年6月25日
 */
public class DateUtil {
    public static void main(String[] args) {        
        TestCalendar();
    }

    public static void TestCalendar() {
        Calendar calendar = Calendar.getInstance();
        // 获取年份
        int year = calendar.get(Calendar.YEAR);
        // 获取月,这里需要需要月份的范围为0~11,因此获取月份的时候需要+1才是当前月份值
        int month = calendar.get(Calendar.MONTH) + 1;
        // 获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        // 获取时
        // int hour = calendar.get(Calendar.HOUR);
        int hour = calendar.get(Calendar.HOUR_OF_DAY); // 24小时表示
        // 获取分
        int minute = calendar.get(Calendar.MINUTE);
        // 获取秒
        int second = calendar.get(Calendar.SECOND);
        // 星期,英语国家星期从星期日开始计算
        int weekday = calendar.get(Calendar.DAY_OF_WEEK) - 1;
        System.out.println(year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second + " 星期" + weekday);
        
        //将给定的日历字段设置为给定值
        calendar.set(Calendar.YEAR, 2020);
        calendar.set(Calendar.MONTH, 7);
        System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH)+1) + "-" + day + " " + hour + ":" + minute + ":" + second + " 星期" + weekday);
        
        //根据日历的规则,为给定的日历字段添加或减去指定的时间量
        calendar.add(Calendar.YEAR, 2);
        System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH)+1) + "-" + calendar.get(Calendar.DAY_OF_MONTH));
        
        //返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象
        Date date=calendar.getTime(); 
        System.out.println(date.toString());
        
        //使用给定的 Date 设置此 Calendar 的时间
        Date dateAnother=new Date();  
        calendar.setTime(dateAnother); 
        System.out.println(calendar.get(Calendar.YEAR) + "-" + (calendar.get(Calendar.MONTH)+1) + "-" + calendar.get(Calendar.DAY_OF_MONTH));
    }
}

 SimpleDateFormat类

      SimpleDateFormat 是一个以与语言环境相关的方式来格式化和分析日期的具体类。它允许进行格式化(日期 -> 文本)、分析(文本 -> 日期)和规范化

package com.yyx.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
 * 日期时间工具类
 * 
 * @author yyx 2018年6月25日
 */
public class DateUtil {
    public static void main(String[] args) {
        testSimpleDateFormat();
    }

    public static void testSimpleDateFormat() {
        //format() 将给定的 Date 格式化为日期/时间字符串
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        Date date=new Date();
        System.out.println(simpleDateFormat.format(date));
        
        String dateString = "2009-08-02 13:43:00";
        SimpleDateFormat df =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        //parse() 解析字符串的文本,生成 Date
        try {
            System.out.println(df.parse(dateString));
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

猜你喜欢

转载自www.cnblogs.com/xianya/p/9193670.html