java中的时间操作
java中的时间操作不外乎这四种情况:
1、获取当前时间
2、获取某个时间的某种格式
3、设置时间
4、时间的运算
好,下面就针对这四种情况,一个一个搞定。
一、获取当前时间
有两种方式可以获得,第一种,使用Date类。
j2SE的包里有两个Date类,一个是java.sql.Date,一个是java.util.Date
这里,要使用java.util.Date。获取当前时间的代码如下
Date date = new Date();
date.getTime();
还有一种方式,使用System.currentTimeMillis();
这两种方式获得的结果是一样的,都是得到一个当前的时间的long型的时间的毫秒值,这个值实际上是当前时间值与1970年一月一号零时零分零秒相差的毫秒数。
当前的时间得到了,但实际的应用中最后往往不是要用这个long型的东西,用户希望得到的往往是一个时间的字符串,比如“2006年6月18号”,或“2006-06-18”,老外可能希望得到的是“06-18-2006”,诸如此类等等。这就是下一个要解决的问题
二、获取某个时间的某种格式
获取时间的格式,需要用到一个专门用于时间格式的类java.text.SimpleDateFormat。
首先,定义一个SimpleDateFormat变量
SimpleDateFormat sdf = new SimpleDateFormat("",Locale.SIMPLIFIED_CHINESE);
这个构造函数的定义如下:
SimpleDateFormat(String pattern, Locale locale)
第一个参数pattern,我们后面再解释,这里我们使用一个"",第二个参数,是用来设置时区的,这里用到了java.util.Locale这个类,这个类了面定义了很多静态变量,直接拿过来用就OK,我们把时区设置为Locale.SIMPLIFIED_CHINESE,只看名字,这个静态变量的意义已经很清楚了。
接下来我们使用这个SimpleDateFormat把当前时间格式化为一个如下格式的时间字符串“XXXX年XX月XX日_XX时XX分XX秒”,代码:
sdf.applyPattern("yyyy年MM月dd日_HH时mm分ss秒");
String timeStr = sdf.format(new Date());
获取时间格式的函数是format,这个函数的参数是java.util.Date对象,这个没有什么花头。
要说明一下的是这个pattern,所谓的模式。这里,yyyy,MM,dd等,这就是模式。
我们可以在SimpleDateFormat的构造函数中指定模式,比如
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd",Locale.SIMPLIFIED_CHINESE);
也可以获取时间格式的时候使用applyPattern函数临时指定,上面的例子就是这样。
什么字符代表什么,这是j2se约定好的,设置模式的时候,我们可以使用约定好的字符加上任何我们想要的字符串。
j2se对字符所代表的模式的约定列表如下:
Letter |
Date or Time Component |
Presentation |
G |
Era designator |
Text |
y |
Year |
Year |
M |
Month in year |
Month |
w |
Week in year |
Number |
W |
Week in month |
Number |
D |
Day in year |
Number |
d |
Day in month |
Number |
F |
Day of week in month |
Number |
E |
Day in week |
Text |
a |
Am/pm marker |
Text |
H |
Hour in day (0-23) |
Number |
k |
Hour in day (1-24) |
Number |
K |
Hour in am/pm (0-11) |
Number |
h |
Hour in am/pm (1-12) |
Number |
m |
Minute in hour |
Number |
s |
Second in minute |
Number |
S |
Millisecond |
Number |
z |
Time zone |
General time zone |
Z |
Time zone |
RFC 822 time zone |
三,设置时间
现在设置时间,推荐 使用java.util.Calendar类来进行操作,因为java.util.Date类很多方法都过时了,
Calendar 类有很多重载的设置时间的方法
我们可以针对于某一项进行设置,也可以同时进行很多设置
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 的值。 |
其中第一个就是给特定的字段设值,后面三个就是针对多个字段赋值
四,时间运算
时间的运算,无外乎就是加加减减,然后比较谁早谁晚而已,这些需求JAVA的API已经帮我们实现的很好了。一般比较时间的可以用如下的方法
abstract void |
add(int field, int amount) 根据日历的规则,为给定的日历字段添加或减去指定的时间量。 |
boolean |
after(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之后,返回判断结果。 |
boolean |
before(Object when) 判断此 Calendar 表示的时间是否在指定 Object 表示的时间之前,返回判断结果。 |
第一个是给某个字段加上某个数量的时间,虽然这个方法名叫add ,我们要减也是调用它的,只不过我们传入的是负数。
其实JAVA对时间操作的支持还是挺丰富的。希望大家的日常的使用中有更多的发现。
分享到:
相关推荐
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...
3.4 小结:基本数据类型—— Java中一切数据和运算的基础 63 3.5 习题 65 第4章 Java中的程序执行流程 67 教学视频:1小时57分钟 4.1 顺序执行 67 4.2 使用if-else让程序懂得判断 68 4.2.1 if语句 68 4.2.2 ...
净额从原生Java的Io操作(BIO)到NIO编程,约会NIO高效并发框架——Netty,需要用到Java的基础知识(多线程,网络编程,IO,设计模式尤其是代理模式),介绍了Netty的高级架构设计和核心模块组件,Google上的...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 3...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。 递归遍历矩阵 1个目标文件,简单! 多人聊天室 ...
四、实践地点、时间、学时分配 教学内容 学时 地点 备注 学习derby数据库环境配置与基础知识 4 机房 Derby数据库操作——查询 4 机房 Derby数据库应用举例 8 机房 Derby数据库应用举例——管理系统 4 机房 编写程序...
第1篇 Java开发必备基础 第1章 搭建Java开发环境 1.1 Java的过去、现在和未来 1.1.1 Java的历史 1.1.2 Java的语言特点 1.1.3 Java API简介 1.1.4 Java未来发展 1.2 Java程序设计环境 1.2.1 命令行工具——JDK 6.0 ...
2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。...
Java已经成熟了,它现在是一种开发能够多种平台上运行的中小型游戏的很好方式。本书将向读者展示用Java语言和它的类库创建2D游戏,所涉及的主题包括高速性能、双缓冲图像、动画、声音、媒体控制、I/O和网络支持等。...
《Java JDK 7学习笔记》是作者多年来教学实践的经验总结,汇集了学员在教学过程中遇到的概念、操作、应用或认证考试上的各种问题及解决方案。 《Java JDK 7学习笔记》详细介绍了JVM、JRE、Java SE API、JDK与IDE...
4.1.1 流——Java I/O的基础 72 4.1.2 Java I/O库 72 4.2 练习 74 4.2.1 数据传送的通道 74 4.2.2 管道的一端 76 4.2.3 文件处理 78 4.2.4 基于对象的读写 80 4.2.5 NIO 85 4.3 小结 89 第5章 如何走得更稳...
全书分4篇,共24章,其中,第1篇为技能学习篇,主要包括Java Web开发环境、JSP语法、JSP内置对象、Java Bean技术、Servlet技术、EL与JSTL标签库、数据库应用开发、初识Struts2基础、揭密Struts2高级技术、Hib锄劬e...
内容简介:本书全面深入地探讨了下一代分布式计算技术—— Web服务,深入透彻地阐述了如何使用Java实现和部署Web服务,同时也全面介绍了与之相关的基础知识。在详细介绍了Web服务之后,本书还引导您探讨Web服务体系...
2个目标文件 摘要:Java源码,文件操作,TCP,服务器 Tcp服务端与客户端的JAVA实例源代码,一个简单的Java TCP服务器端程序,别外还有一个客户端的程序,两者互相配合可以开发出超多的网络程序,这是最基础的部分。...