日期时间类
日期时间类
1. Calendar
- Date类的API大部分被废弃了,替换为Calendar(日历)。
Calendar
类是一个抽象类,主用用于完成日期字段之间相互操作的功能。
实例化
- 使用
Calendar.getInstance()
方法 - 调用它的子类
GregorianCalendar
(公历)的构造器。
常用方法
public int get(int field)
:返回给定日历字段的值public void set(int field,int value)
:将给定的日历字段设置为指定的值public void add(int field,int amount)
:根据日历的规则,为给定的日历字段添加或者减去指定的时间量public final Date getTime()
:将Calendar转成Date对象public final void setTime(Date date)
:使用指定的Date对象重置Calendar的时间
常用字段
字段值 | 含义 |
---|---|
YEAR | 年 |
MONTH | 月(从0开始,可以+1使用) |
DAY_OF_MONTH | 一月中的天数 |
HOUR | 时(12小时制) |
HOUR_OF_DAY | 时(24小时制) |
MINUTE | 分钟 |
SECOND | 秒钟 |
DAY_OF_WEEK | 一周中的天数(周日为1,可以 -1使用) |
2. DateTimeFormatter
该类提供了三种格式化方法:
预定义的标准格式。如:
ISO_LOCAL_DATE_TIME
、ISO_LOCAL_DATE
、ISO_LOCAL_TIME
本地化相关的格式。如:
ofLocalizedDate(FormatStyle.LONG)
// 本地化相关的格式。如:ofLocalizedDateTime()
// FormatStyle.MEDIUM / FormatStyle.SHORT :适用于LocalDateTime
// 本地化相关的格式。如:ofLocalizedDate()
// FormatStyle.FULL / FormatStyle.LONG / FormatStyle.MEDIUM / FormatStyle.SHORT : 适用于LocalDate自定义的格式。如:
ofPattern(“yyyy-MM-dd hh:mm:ss”)
方 法 | 描 述 |
---|---|
ofPattern(String pattern) | 静态方法,返回一个指定字符串格式的DateTimeFormatter |
format(TemporalAccessor t) | 格式化一个日期、时间,返回字符串 |
parse(CharSequence text) | 将指定格式的字符序列解析为一个日期、时间 |
import org.junit.Test; |
3. Instant
- 时间线上的一个瞬时点。 这可能被用来记录应用程序中的事件时间戳。
- 时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数。
实例化
static Instant now()
:静态方法,返回默认UTC时区的Instant类的对象。static Instant ofEpochMilli(long epochMilli)
:静态方法,返回在1970-01-01 00:00:00基础上加上指定毫秒数之后的Instant类的对象。
常用方法
OffsetDateTime atOffset(ZoneOffset offset)
:结合即时的偏移来创建一个 OffsetDateTime。long toEpochMilli()
:返回1970-01-01 00:00:00到当前时间的毫秒数,即为时间戳。long getEpochSecond()
:获得当前时间戳(以秒为单位)。long getNano()
:获得当前时间戳(以纳秒为单位)。
4. java.util.Date
构造器
Date()
:使用无参构造器创建的对象可以获取本地当前时间。Date(long)
:以指定的毫秒值换算成日期时间对象。
常用方法
long getTime()
:返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。void setTime(long)
:设置自 1970 年 1 月 1 日 00:00:00 GMT 以指定毫秒数表示的对象。String toString()
:把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天 (Sun, Mon, Tue, Wed, Thu, Fri, Sat),zzz是时间标准。Instant toInstant()
:将Date对象转化成表示时间点的Instant对象。static Date from(Instant)
:将Instant对象转化成表示日期的Date对象。
5. java.sql.Date
java.sql.Date是继承于ava.util.Date的子类
构造器
Date(long)
:以指定的毫秒值换算成日期时间对象。
常用方法
long getTime()
:返回自 1970 年 1 月 1 日 00:00:00 GMT 以来此 Date 对象表示的毫秒数。void setTime(long)
:设置自 1970 年 1 月 1 日 00:00:00 GMT 以指定毫秒数表示的对象。String toString()
:把此 Date 对象转换为以下形式的 String: yyyy-MM-ssInstant toInstant()
:将Date对象转化成表示时间点的Instant对象。static Date from(Instant)
:将Instant对象转化成表示日期的Date对象。
6. LocalDate、LocalTime、LocalDateTime
- 构造器为private,需要调用其他方法实例化。
- 不可变性,修改会返回新的日期时间对象。
实例化
static Xxx now()
/now(ZoneId zone)
:静态方法,根据当前时间创建对象/指定时区的对象。static Xxx of(xx,xx,xx,xx,xx,xxx)
: 静态方法,根据指定日期/时间创建对象。
常用方法
int getDayOfYear()
|Xxx withDayOfYear(int)
int getDayOfMonth()
|Xxx withDayOfMonth(int)
int getDayOfWeek()
int getYear()
|Xxx withYear(int)
Month getMonth()
|Xxx withMonth(int)
int getMonthValue()
int getHours()
int getMinute()
int getSecond()
Xxx with(TemporalAdjuster t)
Xxx plusYears(long)
|Xxx minusYears(long)
Xxx plusMonths(long)
|Xxx minusMonths(long)
Xxx plusWeeks(long)
|Xxx minusWeeks(long)
Xxx plusDays(long)
|Xxx minusDays(long)
Xxx plusHours(long)
|Xxx minusHours(long)
Xxx plus(TemporalAmount t)
|Xxx minus(TemporalAmount t)
boolean isBefore()
|boolean isAfter()
:比较两个 LocalDate。boolean isLeapYear()
:判断是否是闰年(在LocalDate类中声明)。String format(DateTimeFormatter t)
:格式化本地日期、时间,返回一个字符串。Xxx parse(Charsequence text)
:将指定格式的字符串解析为日期、时间。
7. SimpleDateFormat
- java.text.SimpleDateFormat类是一个不与语言环境有关的方式来格式化和解析日期的具体类。
- 可以进行格式化:日期 —-> 文本
- 可以进行解析:文本 —-> 日期
构造器
public SimpleDateFormat()
:默认的模式和语言环境创建对象。public SimpleDateFormat(String pattern)
:该构造方法可以用参数pattern指定的格式创建一个对象。
常用方法
public String format(Date date)
:方法格式化时间对象date。(格式化)public Date parse(String source)
:从给定字符串的开始解析文本,以生成一个日期。(解析)
//格式化 |
Letter | Date or Time Component | Presentation | Examples |
---|---|---|---|
G |
Era designator | 文本 | AD |
y |
一年 | 年份 | 1996 ; 96 |
Y |
一周一年 | 年份 | 2009 ; 09 |
M |
一年中的月份(上下文敏感) | 月份 | July ; Jul ; 07 |
L |
一年中的月份(独立格式) | 月份 | July ; Jul ; 07 |
w |
一年中的周数 | 数值 | 27 |
W |
一月中的周数 | 数值 | 2 |
D |
一年中的天数 | 数值 | 189 |
d |
一月中的天数 | 数值 | 10 |
F |
一月中的周数 | 数值 | 2 |
E |
一周中的星期名称 | 文本 | Tuesday ; Tue |
u |
一周中的星期 | 数值 | 1 |
a |
AM / PM 标记 |
文本 | PM |
H |
一天中的小时数(0 - 23 ) |
数值 | 0 |
k |
一天中的小时数(1 - 24 ) |
数值 | 24 |
K |
半天中的小时数(1 - 24 ) |
数值 | 0 |
h |
半天中的小时数(1 - 24 ) |
数值 | 12 |
m |
一小时中的分钟数 | 数值 | 30 |
s |
一分钟中的秒钟数 | 数值 | 55 |
S |
一秒钟中的毫秒钟数 | 数值 | 978 |
z |
时区 | 一般时区 | Pacific Standard Time ; PST ; GMT-08:00 |
Z |
时区 | RFC 822 时区 | -0800 |
X |
时区 | ISO 8601 时区 | -08 ; -0800 ; -08:00 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Yomigaeri的博客!