Java 时间类
1.System 类 2.Date 类 3.SimpleDateFormate 类 4.Calendar 类
1.System 类
得到当前的时间值。System 类不能被实例化,需要通过它的静态方法调用。
使用System类 currentTimeMillis() 方法,获取当前系统时间。返回以毫秒为单位的时间,值的粒度取决于底层操作系统。返回值类型:long
long currentTime = System.currentTimeMillis();
2.Date类
时间类,可以获取到一个时间类型的对象。可以使用该类提供的方法,设置一个想要得到的 Date 类型;同时可以得到一个时间类型信息的绝对时间值。
2.1.构造方法
类 Date 表示特定的瞬间,精确到毫秒。
格式 |
参数列表 |
说明 |
示例 |
|
new Date() |
空参 |
获取到一个表示当前系统时间的对象 |
Mon Jul 02 20:19:48 CST 2018 |
| Date(long Date) |
long 类型整数,以毫秒计的绝对时间 |
- 空参获取当前时间,指定 long 类型整数获取 该整数 对应的时间点
System.out.println((new Date())); // 打印当前系统时间
System.out.println(new Date(0)); // 打印绝对时间为 0 的时间点信息
System.out.println(new Date(-3600 * 1000 * 24)); // 打印绝对时间前一天 的时间点信息
2.2.常用方法
方法格式 |
说明 |
| public long getTime() | 返回绝对时间 |
| public void setTime(long time) | 以绝对时间重置对象 |
3.SimpleDateFormat类
- 两类处理
- 格式化: - 使时间信息可读性更好
- 解析: - 便于计算
格式 |
参数列表
|
说明 |
| SimpleDateFormat() | 直接创建空模式对象(使用默认模式) | |
| SimpleDateFormat(String pattern) | 通过 pattern 指定“格式化 / 解析”时间显示格式 | 创建对象时,顺带指定匹配模式 |
- pattern
pattern 是一串字符串,由元字符构造。用来指定时间信息显示格式。
元字符
|
说明 |
举例 |
| y | 年 |
yyyy年MM月dd日 HH:mm:ss SSS a hh:mm |
| M | 年中的月份 | |
| d | 月份中的天数 | |
| a | AM / PM 标记 | |
| H | 一天中的小时数(0-23) | |
| h | 一天中的小时数(1-12) | |
| m | 小时中的分钟数 | |
| s | 分钟中的秒数 | |
| S | 毫秒数 |
- 常用方法
处理 |
格式 |
说明 |
| 格式化 | String format(Date date) | 把 Date 类的时间信息以 指定格式输出 |
| 解析 | Date parse(String source) | 解析字符串 |
示例:常用用法
String arg1 = new SimpleDateFormat("y-MM-dd").format(new Date());
Date arg2 = new SimpleDateFormat("y-MM-dd").parse("arg1");
3.1.格式化输出
- 按照指定模式显示时间信息
SimpleDateFormat sdf = new SimpleDateFormat(); String year = "yyyy年"; // 指定模式
String mon = "MM月";
String day = "dd日";
Date date = new Date(); sdf.applyPattern(year); // 切换对象的匹配模式
System.out.println(sdf.format(date)); //如:2013年
sdf.applyPattern(mon);
System.out.println(sdf.format(date)); //如:07月
sdf.applyPattern(day);
System.out.println(sdf.format(date)); //如:01日
输出完整的时间信息(2038年05月15日 下午 04:14)
String pattern = "yyyy年MM月dd日 a hh:mm";
sdf.applyPattern(pattern); // 切换模式匹配
System.out.println(sdf.format(date)); // 输出时间信息
输出完整的时间信息(2038年5月15日 下午 4:16)
String pattern = "y年M月d日 a h:m";
输出完整的时间信息(时间以24小时格式显示)
String pattern = "y年M月d日 H:m";
- 在创建对象时,可以修改默认匹配模式
在创建对象时指定了匹配模式,对象的使用过程中一样可以修改匹配模式
String pattern = "y年M月d日 H:m";
SimpleDateFormat sdf = new SimpleDateFormat(pattern); pattern = "y年M月d日";
sdf.applyPattern(pattern); // 切换匹配模式
date = new Date(); // 获取当前时间
System.out.println(sdf.format(date)); // 输出日期信息
3.2.解析时间字符串
解析时间的时候,时间字符串的模式必须要匹配模式 pattern
SimpleDateFormat sdf = new SimpleDateFormat(); String pattern = "y年M月d日 H:m";
sdf.applyPattern(pattern);
Date date = sdf.parse("2038年5月15日 4:16");
在解析时间字符串时,要是模式中日期与时间之间有空白字符,解析的字符串需要严格匹配。
4.Calendar 类
该类为操作日历字段,提供了一些方法。
这是一个抽象类,构造对象时,可以使用其提供的一个静态方法得到该类的通用对象。该方法获取当前时间
Calendar cal = Calendar.getInstance(); // 获取一个当前时刻的 Calendar类 时间
- 常用方法
操作方法格式 |
参数 |
返回值 |
说明 |
|
| 获取 | public int get(int field) | 日历字段,是一个枚举数字 | 日历对应的字段信息 | 获取指定字段的值 |
| public final Date getTime() | 返回该类的 Date 对象 | |||
| 修改 | public abstract void add(int field, int amount) | 偏移量可以是个负值 | 无 | 修改指定的日历字段,增加amount |
| 清除 | public final void clear() | 所有日历字段、时间值设置成未定义 | ||
| public final void clear(int field) | 指定字段设定为 未定义 | |||
| 设置 | public void set(int field, int value) | 设置字段 | ||
| public final void setTime(Date date) | 使用Date值设置Calendar值 |
4.1.日历字段值
- 获取日历字段值:
System.out.println(Calendar.YEAR); // 1
System.out.println(Calendar.MONTH); // 2,月份的表示从0开始的;0代表的是1月
System.out.println(Calendar.DAY_OF_MONTH); // 5 System.out.println("" + cal.get(1) + cal.get(2) + cal.get(5)); // 直接输出时月份少了一个月
- 获取时间字段值:
System.out.println(Calendar.HOUR_OF_DAY); //
System.out.println(Calendar.HOUR); //
System.out.println(Calendar.MINUTE); //
System.out.println(Calendar.SECOND); //
System.out.println(Calendar.MILLISECOND); // System.out.println(cal.get(Calendar.HOUR_OF_DAY)); // 0-23格式小时
System.out.println(cal.get(Calendar.HOUR)); // 1-12格式小时
System.out.println(cal.get(Calendar.MINUTE)); // 分钟
System.out.println(cal.get(Calendar.SECOND)); // 秒
System.out.println(cal.get(Calendar.MILLISECOND)); // 毫秒
Java 时间类的更多相关文章
- java时间类简单总结
java时间类(Data类) 1.Data类(没有考虑到国际化,好多方法已过时java.util.Data包中) 父类(是类不是接口含有直接子类3个): 日期格式为:年月日时分秒(不包含毫秒部分) ...
- Java时间类从此变得清晰明了
Java时间类 Java时间类分为Date 日期类和Calendar 日历类,相信很多小伙伴在初学时会对这个两个类的用法.区别以及有什么联系会感到疑惑,似乎懂了,但又不能具体说清,今天再带你来清晰的再 ...
- java时间类Date、Calendar及用法
对于时间类,这篇主要说明各种现实情况下如何取值,怎么定向取值,得到自己想要的时间参数.在java中时间类主要有Date.Calendar,暂时只介绍 java.util.*下的时间类,对于java.s ...
- Java时间类总结
java.util.Date 包含有年月日时分秒,精确到毫秒级别. 官方解释: // The class Date represents a specific instant in time, wit ...
- Java 时间类-Calendar、Date、LocalDate/LocalTime
1.Date 类 java.util.Date是一个"万能接口",它包含日期.时间,还有毫秒数,如果你只想用java.util.Date存储日期,或者只存储时间,那么,只有你知道哪 ...
- Java时间类(转)
package com.chinagas.common.utils; import java.text.ParseException; import java.text.SimpleDateForma ...
- Java 时间类 Date 和 Calendar
在项目中获取一个yyyy-MM-dd HH:mm:ss格式的时间字符串 package org.htsg.kits; import java.text.SimpleDateFormat; import ...
- Java中常见时间类的使用
模拟场景针对于常用的操作API,比如流操作(字符流.字节流),时间操作等,仅仅了解概念性的定义终究是无法了解该类的用途和使用方式:这种情况在使用的时候便一脸茫然,脑海中映射不到对应的知识点.本篇博客将 ...
- Java Calendar类使用总结
平时在浏览一些网站时,有些网站会显示出当前时间,如现在是xx年xx月xx日 xx时xx分xx秒,在实际的开发过程中,也会涉及到日期和时间的计算,Java中提供了一个专门的类Calendar来处理日期与 ...
随机推荐
- C# 泛型类和泛型方法
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- ulimit设置内存限制是否有效
如何使用ulimit限制物理内存 限制物理内存 $ ulimit -m 512000 经测试,无效. 限制物理内存不起作用,ulimit不支持限制物理内存,可见man ulimit手册 -m The ...
- 自然语言处理工具hanlp自定义词汇添加图解
过程分析 1.添加新词需要确定无缓存文件,否则无法使用成功,因为词典会优先加载缓存文件 2.再确认缓存文件不在时,打开本地词典按照格式添加自定义词汇. 3.调用分词函数重新生成缓存文件,这时会报一个找 ...
- gpio模拟I2C,驱动pcf8574T
一.pcf8574T介绍 查看pcf8574T的数据手册, A表示读或写,当A为1的时候表示读,当A为0的时候表示写.现把地址控制线,即A2.A1.A0全部接地,可以得到读控制指令为0x41,写控制指 ...
- 修改machine.config遇到System.Net.ServicePointManager 的类型初始值设定项引发异常
<system.net>节点应该在</configuration>上面添加,即config页尾. 而不是在<configuration> 后面添加. 在</s ...
- .net webapi 收不到json 实体类参数,返回的json中带有k__BackingField
案例:实体类是从WCF项目中复制到webapi项目中,去掉了[DataContract],[DataMember],但[Serializable] 没去掉. 在ApiController 中,实体类输 ...
- git 查看提交的信息diff
git log --stat git show <hashcode> <filename> git log --pretty=oneline <filename> ...
- 关于“最小的K个数”问题
从一堆无序的数中(共n个数)找到最小的K个数,这也算是一道比较经典的题目了,关于这道题目的解法,一般有几种: 方法1:先对所有的数据进行排序,然后直接找出前K个数来,即最小的K个数.时间复杂度为O(N ...
- 部署Java Web项目到Heroku
1.在Heroku上创建一个新的App 2. 创建成功后添加对MYSQL的支持,点击find more add-ons 3. 这里我选择的是 JawsDB Mysql 4.添加成功后我们可以查看数据库 ...
- openssl命令实例
基本知识 1,证书标准 X.509 X.509 - 这是一种证书标准,主要定义了证书中应该包含哪些内容.其详情可以参考RFC5280,SSL使用的就是这种证书标准. X.509的证书文件,一般以.cr ...