zl程序教程

您现在的位置是:首页 >  后端

当前栏目

【JAVA】Date类、Calendar类

JAVA Date calendar
2023-09-11 14:20:37 时间

Date类方法

.
1、public boolean after(Date when)
.
测试此日期是否在指定日期之后。
.
返回:当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间晚,才返回 true;否则返回 false。
.
2、public boolean before(Date when)
.
测试此日期是否在指定日期之前。
.
返回:当且仅当此 Date 对象表示的瞬间比 when 表示的瞬间早,才返回 true;否则返回 false。
.
3、public int compareTo(Date anotherDate)
.
比较两个日期的顺序。
.
返回:如果参数 Date 等于此 Date,则返回值 0;如果此 Date 在 Date 参数之前,则返回小于 0 的值;如果此 Date 在 Date 参数之后,则返回大于 0 的值。
.
4、public boolean equals(Object obj)
.
比较两个日期的相等性。当且仅当参数不为 null,并且是一个表示与此对象相同的时间点(到毫秒)的 Date 对象时,结果才为 true。
.
5、public long getTime()
.
返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
.
6、public void setTime(long time)
.
设置此 Date 对象,以表示 1970 年 1 月 1 日 00:00:00 GMT 以后 time 毫秒的时间点。
.
7、public String toString()
把此 Date 对象转换为以下形式的 String:
dow mon dd hh:mm:ss zzz yyyy其中:
.
dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat)。
.
mon 是月份 (Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec)。
.
dd 是一月中的某一天(01 至 31),显示为两位十进制数。
.
hh 是一天中的小时(00 至 23),显示为两位十进制数。
mm 是小时中的分钟(00 至 59),显示为两位十进制数。
.
ss 是分钟中的秒数(00 至 61),显示为两位十进制数。
zzz 是时区(并可以反映夏令时)。标准时区缩写包括方法 parse 识别的时区缩写。如果不提供时区信息,则 zzz 为空,即根本不包括任何字符。
.
yyyy 是年份,显示为 4 位十进制数。

Calender类方法

.
abstract void add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。
.
boolean after(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。
.
boolean before(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。
.
void clear()将此 Calendar 的所日历字段值和时间值(从历元至现在的毫秒偏移量)设置成未定义。
.
void clear(int field) 将此 Calendar 的给定日历字段值和时间值(从历元至现在的毫秒偏移量)设置成未定义。
.
Object clone()创建并返回此对象的一个副本。
.
int compareTo(Calendar anotherCalendar) 比较两个 Calendar 对象表示的时间值(从历元至现在的毫秒偏移量)。
.
protected void complete()填充日历字段中所有未设置的字段。
.
protected abstract void computeFields()将当前毫秒时间值 time 转换为 fields[] 中的日历字段值。
.
protected abstract void computeTime()将 fields[] 中的当前日历字段值转换为毫秒时间值 time。
.
boolean equals(Object obj) 将此 Calendar 与指定 Object 比较。
.
int get(int field)返回给定日历字段的值。
.
int getActualMaximum(int field)给定此 Calendar 的时间值,返回指定日历字段可能拥有的最大值。
.
int getActualMinimum(int field)给定此 Calendar 的时间值,返回指定日历字段可能拥有的最小值。
.
static Locale[] getAvailableLocales()返回所有语言环境的数组,此类的 getInstance 方法可以为其返回本地化的实例。
.
String getDisplayName(int field, int style, Locale locale) 返回给定 style 和 locale 下的日历 field 值的字符串表示形式。
.
Map<String,Integer> getDisplayNames(int field, int style, Locale locale) 返回给定 style 和 locale 下包含日历 field 所有名称的 Map 及其相应字段值。
.
int getFirstDayOfWeek()获取一星期的第一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。
.
abstract int getGreatestMinimum(int field)返回此 Calendar 实例给定日历字段的最高的最小值。
.
static Calendar getInstance() 使用默认时区和语言环境获得一个日历。
.
static Calendar getInstance(Locale aLocale) 使用默认时区和指定语言环境获得一个日历。
.
static Calendar getInstance(TimeZone zone) 使用指定时区和默认语言环境获得一个日历。
.
static Calendar getInstance(TimeZone zone, Locale aLocale) 使用指定时区和语言环境获得一个日历。
.
abstract int getLeastMaximum(int field) 返回此 Calendar 实例给定日历字段的最低的最大值。
.
abstract int getMaximum(int field) 返回此 Calendar 实例给定日历字段的最大值。
.
int getMinimalDaysInFirstWeek()获取一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则此方法将返回 1。
.
abstract int getMinimum(int field) 返回此 Calendar 实例给定日历字段的最小值。
.
Date getTime()返回一个表示此 Calendar 时间值(从历元至现在的毫秒偏移量)的 Date 对象。
.
long getTimeInMillis()返回此 Calendar 的时间值,以毫秒为单位。
.
TimeZone getTimeZone()获得时区。
.
int hashCode()返回该此日历的哈希码。
.
protected int internalGet(int field)返回给定日历字段的值。
.
boolean isLenient()判断日期/时间的解释是否为宽松的。
.
boolean isSet(int field) 确定给定日历字段是否已经设置了一个值,其中包括因为调用 get 方法触发内部字段计算而导致已经设置该值的情况。
.
abstract void roll(int field, boolean up) 在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。
.
void roll(int field, int amount) 向指定日历字段添加指定(有符号的)时间量,不更改更大的字段。
.
void set(int field, int value) 将给定的日历字段设置为给定值。
.
void set(int year, int month, int date) 设置日历字段 YEAR、MONTH 和 DAY_OF_MONTH 的值。
.
void set(int year, int month, int date, int hourOfDay, int minute) 设置日历字段 YEAR、MONTH、DAY_OF_MONTH、HOUR_OF_DAY 和 MINUTE 的值。
.
void set(int year, int month, int date, int hourOfDay, int minute, int second) 设置字段 YEAR、MONTH、DAY_OF_MONTH、HOUR、MINUTE 和 SECOND 的值。
.
void setFirstDayOfWeek(int value) 设置一星期的第一天是哪一天;例如,在美国,这一天是 SUNDAY,而在法国,这一天是 MONDAY。
.
void setLenient(boolean lenient) 指定日期/时间解释是否是宽松的。
.
void setMinimalDaysInFirstWeek(int value) 设置一年中第一个星期所需的最少天数,例如,如果定义第一个星期包含一年第一个月的第一天,则使用值 1 调用此方法。
.
void setTime(Date date) 使用给定的 Date 设置此 Calendar 的时间。
.
void setTimeInMillis(long millis) 用给定的 long 值设置此 Calendar 的当前时间值。
.
void setTimeZone(TimeZone value) 使用给定的时区值来设置时区。
.
String toString() 返回此日历的字符串表示形式

获取当前系统时间和日期并格式化输出:

//SimpleDateFormat格式化时间
import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test1 {
    @Test
    public void test6(){
        Date d = new Date();
        SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 hh:mm:ss ms");
        //把日期时间格式化成字符串
        String cur = df.format(d);
        System.out.println(cur);

        try {
            //把符合模式串的字符串转换成Date对象
            Date dd = df.parse("2018年05月19日 08:55:42 5542");
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

计算某代码的性能:

import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test1 {
    @Test
    public void test4(){
        long start = System.currentTimeMillis();
        circle1();
        long end = System.currentTimeMillis();
        System.out.println(end - start);
    }
 }

得到当前时间的毫秒数:

import org.junit.Test;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Test1 {
 @Test
    public void test5(){
        System.out.println(System.currentTimeMillis());
    }
  }

日历类的基本用法

    @Test
    public void test3(){
        //取年
        int year = calendar.get(Calendar.YEAR);
        //取月
        int month = calendar.get(Calendar.MONTH);
        //取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        //取时
        int hour = calendar.get(Calendar.HOUR);
        //取分
        int minute = calendar.get(Calendar.MINUTE);
        //取秒
        int second = calendar.get(Calendar.SECOND);
        //取星期几
        int weedday = calendar.get(Calendar.DAY_OF_WEEK);

        System.out.println(year + "年" + month + "月" + day + "日,星期" + weedday);
    }
  }

当前时间增加一年

import org.junit.Before;
import org.junit.Test;
import java.util.Calendar;

public class Test2 {
    private Calendar calendar = null;
    @Before
    public void test1(){
        calendar = Calendar.getInstance();
    }
     @Test
    public void test4(){
        //当前时间增加一年
        calendar.add(Calendar.YEAR,1);
        //取年
        int year = calendar.get(Calendar.YEAR);
        //取月
        int month = calendar.get(Calendar.MONTH);
        //取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(year + "年" + month + "月" + day + "日");
    }
  }

计算规定时间的星期

import org.junit.Before;
import org.junit.Test;
import java.util.Calendar;

public class Test2 {
 /**
     * 2014年2月的最后一天是星期几
     */
    @Test
    public void test5(){
        calendar.set(2014,3,1);
        calendar.add(Calendar.DAY_OF_MONTH,-1);
        int day = calendar.get(Calendar.DAY_OF_WEEK);
        System.out.println(day);
    }
}