首页 > 编程知识 正文

java各种常用时间操作方法(java中操作日期的类有哪些)

时间:2023-12-24 12:05:31 阅读:320467 作者:XGFH

本文目录一览:

JAVA 时间相加

如果要取出

int getDate()

已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_MONTH) 取代。

int getDay()

已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.DAY_OF_WEEK) 取代。

int getHours()

已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.HOUR_OF_DAY) 取代。

int getMinutes()

已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MINUTE) 取代。

int getMonth()

已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.MONTH) 取代。

int getSeconds()

已过时。 从 JDK 1.1 开始,由 Calendar.get(Calendar.SECOND) 取代。

long getTime()

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

如果要相加

void setDate(int date)

已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.DAY_OF_MONTH, int date) 取代。

void setHours(int hours)

已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.HOUR_OF_DAY, int hours) 取代。

void setMinutes(int minutes)

已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MINUTE, int minutes) 取代。

void setMonth(int month)

已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.MONTH, int month) 取代。

void setSeconds(int seconds)

已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.SECOND, int seconds) 取代。

void setTime(long time)

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

void setYear(int year)

已过时。 从 JDK 1.1 开始,由 Calendar.set(Calendar.YEAR, year + 1900) 取代。

最好用Calendar类代替,更方便

用java实现日期类的加减

import java.util.Date;

import java.util.Calendar;

import java.text.SimpleDateFormat;

import java.util.*;

public class CalendarExample {

private static void CalendarTimemethod() {

Date date = Calendar.getInstance().getTime();

System.out.println("Current date and time is: " + date);

System.out.println();

}

private static void SimpleDateFormatmethod() {

Calendar date = Calendar.getInstance();

SimpleDateFormat dateformatter = new SimpleDateFormat(

"E yyyy.MM.dd 'at' hh:mm:ss a zzz");

System.out.println("Current date and time in simple date format: "

+ dateformatter.format(date.getTime()));

System.out.println();

}

private static void Adddates() {

System.out.println("Performing operations on calendar dates.");

// Get today's date

Calendar date = Calendar.getInstance();

Calendar cldr;

SimpleDateFormat dateformatter = new SimpleDateFormat(

"E yyyy.MM.dd 'at' hh:mm:ss a zzz");

cldr = (Calendar) date.clone();

cldr.add(Calendar.DAY_OF_YEAR, -(365 * 2));

System.out.println("Before two years it was: "

+ dateformatter.format(cldr.getTime()));

cldr = (Calendar) date.clone();

cldr.add(Calendar.DAY_OF_YEAR, +5);

System.out.println("After five years it will be: "

+ dateformatter.format(cldr.getTime()));

System.out.println();

}

private static void DateDifference() {

System.out.println("Difference between two dates");

Date startDate1 = new GregorianCalendar(2005, 02,

25, 14, 00).getTime();

Date endDate1 = new Date();

;

long diff = endDate1.getTime() - startDate1.getTime();

System.out.println(" Difference between " + endDate1);

System.out.println(" and " + startDate1 + " is " + (diff /

(1000L * 60L * 60L * 24L)) + " days.");

System.out.println();

}

private static void Getcalendermethods() {

System.out.println("Various get methods of the calendar class:");

Calendar calender = Calendar.getInstance();

System.out.println("Year : "

+ calender.get(Calendar.YEAR));

System.out.println("Month : "

+ calender.get(Calendar.MONTH));

System.out.println("Day of Month : "

+ calender.get(Calendar.DAY_OF_MONTH));

System.out.println("Day of Week : "

+ calender.get(Calendar.DAY_OF_WEEK));

System.out.println("Day of Year : "

+ calender.get(Calendar.DAY_OF_YEAR));

System.out.println("Week of Year : "

+ calender.get(Calendar.WEEK_OF_YEAR));

System.out.println("Week of Month : "

+ calender.get(Calendar.WEEK_OF_MONTH));

System.out.println("Day of the Week in Month : "

+ calender.get(Calendar.DAY_OF_WEEK_IN_MONTH));

System.out.println("Hour : " + calender.get(Calendar.HOUR));

System.out.println("AM PM : " + calender.get(Calendar.AM_PM));

System.out.println("Hour of the Day : "

+ calender.get(Calendar.HOUR_OF_DAY));

System.out.println("Minute : " + calender.get(Calendar.MINUTE));

System.out.println("Second : " + calender.get(Calendar.SECOND));

System.out.println();

}

public static void main(String[] args) {

System.out.println();

CalendarTimemethod();

SimpleDateFormatmethod();

Adddates();

DateDifference();

Getcalendermethods();

}

}

以上答案有林氏120烫伤中心提供。稍微再修改下就可以

java整么计算时间

提供一个时间操作类给你,你可以调用里面的dateDiff方法,dateDiff(new Date(), getDateFromString("明天的字符串")表示的就是现在到明天0点之前的差距天数。

你要分钟数的话就自己改一下dateDiff,不要除以60和24就是分钟了

以下是工具类代码

import org.apache.log4j.Logger;

import java.text.ParseException;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

public class AdDateUtil {

    private static Logger logger = Logger.getLogger(AdDateUtil.class);

    static public String getNowStr(String format) {

        SimpleDateFormat sdf = new SimpleDateFormat(format);

        String now = sdf.format(new Date());

        return now;

    }

    static public Date getFormatDate(String date, String format) {

        SimpleDateFormat sdf = new SimpleDateFormat(format);

        Date d = new Date();

        try {

            d = sdf.parse(date);

        } catch (ParseException e) {

            logger.error(e);

        }

        return d;

    }

    static public String getDateStr(Date date, String format) {

        SimpleDateFormat sdf = new SimpleDateFormat(format);

        String d = sdf.format(date);

        return d;

    }

    static public String getPadZeroString(String s, int size) {

        StringBuffer sb = new StringBuffer();

        for (int i = 0; i  (size - s.length()); i++) {

            sb.append("0");

        }

        sb.append(s);

        return sb.toString();

    }

    /**

    * 得到某月的天数

    *

    * @param year

    * @param month

    * @return

    */

    static public int getDayCountOfMonth(String year, String month) {

        Calendar cal = Calendar.getInstance();

        // 年

        cal.set(Calendar.YEAR, Integer.parseInt(year));

        // 月,因为Calendar里的月是从0开始,所以要-1

        cal.set(Calendar.MONTH, Integer.parseInt(month) - 1);

        return cal.getActualMaximum(Calendar.DAY_OF_MONTH);

    }

    static public String getYesterday(String format) {

        SimpleDateFormat df = new SimpleDateFormat(format);

        Calendar now = Calendar.getInstance();

        now.roll(Calendar.DAY_OF_YEAR, -1); //昨天

        return df.format(now.getTime());

    }

    /**

    * 获取和今天附近的某天

    * @param format

    * @param diff

    * @return

    */

    static public String getADay(String format, int diff) {

        SimpleDateFormat df = new SimpleDateFormat(format);

        Calendar now = Calendar.getInstance();

        int beforeM = now.get(Calendar.MONTH);

        now.roll(Calendar.DAY_OF_YEAR, diff); //

        int nowM = now.get(Calendar.MONTH);

        //必须进行日期处理,否则2009-01-04日前七天是2009-12-28

        if (nowM  beforeM) {

            now.roll(Calendar.YEAR, -1);

        }

        return df.format(now.getTime());

    }

    static public String getTomorrow(String format) {

        SimpleDateFormat df = new SimpleDateFormat(format);

        Calendar now = Calendar.getInstance();

        now.roll(Calendar.DAY_OF_YEAR, 1); //明天

        return df.format(now.getTime());

    }

    /**

    * 得到最近num天的全部日期

    * 说明:

    * 1.日期是从昨天开始算的.

    * 2.如果num=2 , 日期是2008-03-14 ,则返回的结果为 2008-03-12、2008-03-13

    * @param num

    * @return

    */

    public static String[] getDaysByNum(int num, String date) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        String[] result = {  };

        Calendar cal = Calendar.getInstance();

        cal.setTime(getDateFromString(date, "yyyy-MM-dd"));

        //最近一周

        result = new String[num];

        for (int i = num; i  0; i--) {

            cal.add(Calendar.DAY_OF_YEAR, -1);

            result[i - 1] = sdf.format(new Date(cal.getTimeInMillis()));

        }

        return result;

    }

    public static Date getDateFromString(String dateStr, String format) {

        if ((dateStr == null) || (format == null)) {

            try {

                throw new Exception("数据类型异常" + dateStr + "|" + format);

            } catch (Exception e) {

                logger.error("数据类型异常:" + e);

            }

        }

        SimpleDateFormat df = new SimpleDateFormat(format);

        Date date;

        try {

            date = df.parse(dateStr);

            return date;

        } catch (Exception ex) {

            logger.error(ex);

            return new Date();

        }

    }

    static public int getNowYear() {

        Calendar cal = Calendar.getInstance();

        return cal.get(Calendar.YEAR);

    }

    static public int getNowMonth() {

        Calendar cal = Calendar.getInstance();

        return cal.get(Calendar.MONTH) + 1;

    }

    public static String[] getMonthRang(String year, String month) {

        String beginDate = year + "-" + month + "-01";

        String endDate = year + "-" + month + "-" +

            getDayCountOfMonth(year, month);

        return getDaysByRang(beginDate, endDate);

    }

    public static String[] getDaysByRang(String beginDate, String endDate) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        //得到两个日期间相差多少天

        int num = dateDiff(beginDate, endDate);

        if (num  0) {

            //颠倒一下日期

            String tmp = beginDate;

            beginDate = endDate;

            endDate = tmp;

            num = 0 - num;

        }

        String[] result = {  };

        Calendar cal = Calendar.getInstance();

        try {

            cal.setTime(sdf.parse(beginDate));

        } catch (ParseException e) {

            e.printStackTrace();

        }

        num = num + 1; //把开始和结束日期都包含进去

        result = new String[num];

        for (int i = 0; i  num; i++) {

            if (i  0) {

                cal.add(Calendar.DAY_OF_YEAR, 1);

            }

            result[i] = sdf.format(new Date(cal.getTimeInMillis()));

        }

        return result;

    }

    public static int dateDiff(String beginDate, String endDate) {

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        Date date = null;

        try {

            date = sdf.parse(endDate);

        } catch (ParseException e) {

            date = new Date();

            e.printStackTrace();

        }

        long end = date.getTime();

        try {

            date = sdf.parse(beginDate);

        } catch (ParseException e) {

            date = new Date();

            e.printStackTrace();

        }

        long begin = date.getTime();

        long day = (end - begin) / (1000 * 3600 * 24); //除1000是把毫秒变成秒

        return Integer.parseInt(Long.toString(day));

    }

    public static void main(String[] args) {

        System.out.println(AdDateUtil.getADay("yyyy-MM-dd", -7));

    }

}

什么是java时间API?

在我们开发中,对于任何操作,信息中时间是非常重要的一点,我们可以根据时间判断发生的时间,时间可以记录非常重要的信息;

在Java中,专门给我们提供了处理时间的API,根据Java封装的时间类,我们可以很方便的操作时间信息;

在处理时间的时候,有个概念我们经常会用到,就是时间戳,时间戳表示的是从1970年01月01日00时00分00秒起至现在的总毫秒数,我们可以将时间戳与时间进行随意的替换;

Java中处理时间的类是java.util.Date,这个类有常用的两个构造方法,一个是无参的获取的当前时间的对象,一个是出入一个时间戳,获取该时间戳对应的时间,JDK中这个类还提供了一些其他的构造方法,比如传入年月日等多个参数获取对应的时间,但是这些构造方法JDK中已经不建议使用了,需要注意的是,使用年月日参数(过时的构造方法)创建对象的时候,传入的年的参数需要减去1900,因为JDK中默认处理将年份增加了1900;

Java中还提供了一个类SimpleDateFormat可以方便我们将Date与字符串进行转换,Date类中重写了toString方法,所以当打印date的时候,会按照重写的格式进行打印,但是有时候我们需要定义自己的格式进行输入输出,这时候就可以使用SimpleDateFormat类来进行自定义;

创建SimpleDateFormat对象的时候,需要传入一个参数,我们可以按照自己想要的格式进行编写,例如”yyyy-MM-dd hh:mm:ss:SSS”, 这样输出的格式就会是年-月-日 时:分:秒;我们可以随意调整打印的顺序与格式;其中yyyy表示年份,MM表示月份(大写),dd表示日期,hh表示小时,mm表示分钟(小写),ss表示秒(小写),SS表示毫秒(大写);除了这些格式外,还可以打印到时区,周几,一周第几天等信息;

除了可以将时间对象转换成字符串,SimpleDateFormat也可以将字符串转按照相应的格式成对应的时间;

java 怎么得到timestamp的类型的当前时间

在java当中要获得timestamp的类型的当前时间,需要按照不同的java类型进行正确的编码,掌握相关的技巧来整理系统时间数据,并及时修补漏洞即可解决该问题,具体的操作方法可以吃参考下面的内容。

1、首先要明确java的类型分类,注意分析java中Date及Timestamp时间的相关内容,在 Java编程当中,主要分为JavaSQLDAO、java.util.date、java.sql.date、java.sql.timestamp 等几种类别,按照对应的类别进行正确的编程,得到正确的系统时间数据。

2、以上类别各自进行对应的编码,java.sql.Date是指只存储日期数据不存储时间数据,有可能会出现丢失时间数据的情况,可通过输入代码preparedStatement.setDate(1, new java.sql.Date(date.getTime()))的方式来解决。

3、对于java.util.date来说,可以输入preparedStatement.setTimestamp(1, new java.sql.Timestamp(new java.util.Date().getTime()));的代码。

4、若是想得到完整的数据,包括日期和时间,可以输入java.util.Date d = resultSet.getTimestamp(1);的代码。

5、当然,为了避免一些潜在Timestamp 问题 的话,可以输入java.util.Date d = new java.util.Date(resultSet.getTimestamp(1).getTime());的代码,这样处理将会更加合适且有效。

java里日期循环方法

可以通过日期的add(Calendar.MONTH, 1)方法进行月份切换,输出每个满足条件的值

Date d1 = new SimpleDateFormat("yyyy-MM").parse("2015-6");//定义起始日期

Date d2 = new SimpleDateFormat("yyyy-MM").parse("2016-5");//定义结束日期

Calendar dd = Calendar.getInstance();//定义日期实例

dd.setTime(d1);//设置日期起始时间

while(dd.getTime().before(d2)){//判断是否到结束日期

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM");

String str = sdf.format(dd.getTime());

System.out.println(str);//输出日期结果

dd.add(Calendar.MONTH, 1);//进行当前日期月份加1

}

输出结果:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。