Java 时间日期API总结

Date类 java.util.Date包

  • 常用构造方法
    • Date():系统当前时间
    • Date(long time) :以标准基准时间,毫秒计生成时间
  • 常用方法

    • boolean after(Date when):测试此日期是否在指定日期(Date when)之后;
    • boolean before(Date when):测试此日期是否在指定日期之前;
    • int compareTo(Date anotherDate):比较两个日期顺序;(相等返回0,在anotherDate之前返回负数,在anotherDate之后返回正数);
    • boolean equals(Object object):比较两个日期的相等性(相同long值);
    • long getTime():得到标准基准时间的毫秒;
    • void setTime(long time):设置时间;
    public class DateDemo {
    
        public static void main(String[] args) {
            Date now = new Date();
            System.out.println(now);
            //Date -> Long
            long nowLong = now.getTime();
            System.out.println(nowLong);
            //Long -> Date
            Date yesterday = new Date(nowLong-24*60*60*1000);
            System.out.println(yesterday);
    
            Date lastYear = new Date();
            long day = 24*60*60*1000; 
            lastYear.setTime(nowLong-(365*day));
            System.out.println(lastYear);
    
            System.out.println(now.after(yesterday));
            System.out.println(now.before(yesterday));
    
            System.out.println(now.compareTo(yesterday));
            System.out.println(now.compareTo(now));
            System.out.println(lastYear.compareTo(now));
    
    
            System.out.println(lastYear.equals(now));
            System.out.println(now.equals(now));
            Date d1 = new Date();
            Date d2 = new Date();
            d1.setTime(d2.getTime());
            System.out.println(d1.equals(d2));
        }
    }

    SimpleDateFormat类 java.text.SimpleDateFormat包

  • 格式化日期:格式化字符:y :年、M:月、d:日、H:小时、m:分钟、s:秒、S:毫秒;

  • 常用构造方法

    • SimpleDateFormat(String format);
  • 常用方法

    • Date parse(String fromat):将字符串转换为Date类;
    • String format(Date time):将日期按照给定format格式转换为字符串;
    public class SimpleDateFormatDemo {
    
        public static void main(String[] args) {
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss");
            String nowDateStr = sdf.format(new Date());
            System.out.println(nowDateStr);
        }
    }

Calendar类 java.util.Calendar包

  • 常用方法

    • static Caledar getInstance():获得Calendar实例;
    • set(Calendar.字段,int date):设置某个字段值;
    • add(Calendar.字段,int number):为某个字段增加一个值;
    • Date getTime():将Calendar转换为Date;
    • setTime(Date time):将Date转换为Calendar
    public class CalendarDemo {
    
        public static void main(String[] args) throws ParseException {
            //获得实例
            Calendar calendar = Calendar.getInstance();
            //设置某个字段的值
            calendar.set(Calendar.YEAR, 1946);
            //为某个字段加上一个值
            calendar.add(Calendar.YEAR, 3);
            //Calendar => Date
            Date date = calendar.getTime();
            System.out.println(date);
    
            calendar.set(Calendar.MONTH,Calendar.MARCH);
            System.out.println(calendar.getTime());
    
            //Date => Calendar
            Calendar c = Calendar.getInstance();
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy");
            Date d = sdf.parse("1938");
            c.setTime(d);
            System.out.println(c.getTime());
    
    
            System.out.println(DateUtil.addDay(d, -3));
    
            System.out.println(DateUtil.format(c.getTime()));
        }   
    }

时间工具类

package com.chinasofti.se.api.homework;

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


ndar.MONTH, monthes);
        return c1.gepublic class DateUtil {

    public static final String DATE_PATTERN = "yyyy-MM-dd HH:mm:ss";

    /**
     * 添加天数
     * @param date1
     * @param days
     * @return
     */
    public static Date addDay(Date date1, int days) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(date1);
        c1.add(Calendar.DAY_OF_MONTH, days);
        return c1.getTime();    
    }
    /**
     * 添加月数
     * @param date1
     * @param monthes
     * @return
     */
    public static Date addMonth(Date date1, int monthes) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(date1);
        c1.add(CaletTime(); 
    }
    /**
     * 添加年数
     * @param date1
     * @param years
     * @return
     */
    public static Date addYear(Date date1, int years) {
        Calendar c1 = Calendar.getInstance();
        c1.setTime(date1);
        c1.add(Calendar.YEAR, years);
        return c1.getTime();    
    }
    /**
     * 格式化日期
     * @param date
     * @return
     */
    public static String formatDate(Date date){
        SimpleDateFormat sdf1 = new SimpleDateFormat("今天是yyyy年MM月dd日,还记得去年今日。。。");
        return sdf1.format(date);
    }

    public static String formatDate(Date date, String str){
        SimpleDateFormat sdf1 = new SimpleDateFormat(str);
        return sdf1.format(date);
    }

    public static String formatShort(Date date){
        SimpleDateFormat sdf1 = new SimpleDateFormat("MM-dd-yyyy  HH:mm:ss");
        return sdf1.format(date);
    }
    /**
     * 解析日期
     * @param dateString
     * @return 
     * @throws ParseException 
     */
    public static Date  parseCal(String dateString){
        SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

            try {
                return sdf2.parse(dateString);
            } catch (ParseException e) {
                e.printStackTrace();
            }
                return null;
    }
    public static Date  parseCal(String dateString, String str){
        SimpleDateFormat sdf2 = new SimpleDateFormat(str);

        try {
            return sdf2.parse(dateString);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return null;
    }
    /**
     * 比较两个日期
     * @param date1
     * @param date2
     * @return
     */
    public static Date compare(Date date1, Date date2){
        return (date1.compareTo(date2))>0?date1:date2;
    }
    /**
     * 计算两个日期相差的天数
     * @param date1
     * @param date2
     * @return
     */
    public static long subduction(Date date1, Date date2){
        long day=24*60*60*1000;
        long l = date1.getTime()-date2.getTime();
        return Math.abs(l)/day;
    }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值