Java中的时间操作详细整理(一)

Java中的时间操作主要涉及到的类

  1. import java.text.DateFormat; // 格式化类,是一个抽象类。实现时间与字符串类型的相互转化
  2. import java.text.ParseException; // 用于将字符串转化为时间类型
  3. import java.text.SimpleDateFormat; // 是抽象类DateFormat的实现类。
  4. import java.util.Calendar; // 推荐使用的类。是一个抽象类。
  5. import java.util.Date; // 基本时间类
  6. import java.util.GregorianCalendar; // 抽象类Calendar的实现类。在这里可以对时间进行操作

java中时间的简介

  1. Java中时间的表示说白了也是数字,是从:标准纪元1970.1.1 0点开始到某个时刻的毫秒数,类型是long。
  2. 一个时间与字符串相相互转换的例子
// 使用DateFormat类来进行时间与字符串之间的互相转化
// 将日期转化为字符串类型,按照固定格式格式化字符串
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd  hh:mm:ss a W w z");
String currentTime = dateFormat.format(d1);  // 将时间对象按照格式化字符串转化为字符串
System.out.println(currentTime);
String str = "2018-9-26 22:40:45";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd hh:mm:ss"); // 这里的格式需要与str里的保持一致
try {
	Date date2 = sdf.parse(str);
	System.out.println("date2:" + date2);
} catch (ParseException e) {
	System.out.println("转换失败!");
}		
  1. GregorianCalendar是Calendar的一个具体子类,提供了
    世界上大多数国家/地区使用的标准日历系统。
    注意:
    • 月份:一月是0,二月是1,以此类推,12月是11
    • 星期:周日是1。。。周六是7
      下面是一个简单的GregorianCalendar的例子
Calendar c = new GregorianCalendar();
c.set(2018, 8, 27, 8, 59, 59);  // 如果不设置  则显示当前时间
//c.set(Calendar.YEAR, 2008);  
Date d = c.getTime();
System.out.println(d);
c.add(Calendar.YEAR, 2);  // 这里的YEAR可以换为MONTH等其他参数,均可以得到相应的值。
System.out.println(c.get(Calendar.YEAR));

一些其他的简单api

Date类:

  • long getTime()
    返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。
  • boolean after(Date when)
    测试此日期是否在指定日期之后。
  • boolean before(Date when)
    测试此日期是否在指定日期之前。
  • int compareTo(Date anotherDate)
    比较两个日期的顺序。
  • boolean equals(Object obj)
    比较两个日期的相等性。

Calendarl类

  • 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的一些api,主要是一些字段

字母 日期或时间元素 表示 示例
G Era 标志符 Text AD
y 年 Year 1996; 96
M 年中的月份 Month July; Jul; 07
w 年中的周数 Number 27
W 月份中的周数 Number 2
D 年中的天数 Number 189
d 月份中的天数 Number 10
F 月份中的星期 Number 2
E 星期中的天数 Text Tuesday; Tue
a Am/pm 标记 Text PM
H 一天中的小时数(0-23) Number 0
k 一天中的小时数(1-24) Number 24
K am/pm 中的小时数(0-11) Number 0
h am/pm 中的小时数(1-12) Number 12
m 小时中的分钟数 Number 30
s 分钟中的秒数 Number 55
S 毫秒数 Number 978
z 时区 General time zone Pacific Standard Time; PST; GMT-08:00
Z 时区 RFC 822 time zone -0800
常用到的格式:
yyyy-MM-dd hh:mm:ss a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值