`
xdw1626
  • 浏览: 174461 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java中的时间操作(自己学习,转贴)

    博客分类:
  • java
阅读更多
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对时间操作的支持还是挺丰富的。希望大家的日常的使用中有更多的发现。
分享到:
评论

相关推荐

    flex和java进行CRUD操作(转贴)

    本篇文章将围绕"Flex与Java进行CRUD操作"这一主题展开,详细介绍如何使用Flex作为前端,通过与Java后端交互来实现创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)数据的功能。 1. **Flex基础知识** ...

    Axis学习笔记(网页转贴)

    **Axis学习笔记(网页转贴)** Axis是一个开源的Java库,主要用于创建和使用Web服务。它是Apache软件基金会的一部分,广泛应用于开发基于SOAP(简单对象访问协议)的Web服务。本学习笔记将深入探讨Axis在Web服务开发...

    ZZ: 时间管理方法(转贴)

    标题中的“ZZ: 时间管理方法(转贴)”表明这是一篇关于时间管理的文章,可能是从其他地方转载而来。从描述中的“博文链接:https://lkfnn.iteye.com/blog/33600”我们可以推测,这是一篇在ITeye技术社区发表的博客...

    android和java面试大全集

    Java学习笔记(必看经典).doc android和java面试大全.rar JAVA精华.doc JAVA经典算法50题1.doc Android笔试题库.rar Java面试宝典2011版-1B,Java基础部分.doc Java工程师试题(机构招聘)20100526.doc C语言面试题大...

    java面试大全(中软国际的大公司)

    文档"Java学习过程中应该深入理解的一些重点.doc"可能会涵盖这些内容。 2. **集合框架**:Java集合框架是面试中常见的考点,包括List(如ArrayList和LinkedList)、Set(如HashSet和TreeSet)、Map(如HashMap和...

    java编程事项(转载收集整理版)

    同时,接口也是Java中实现多态性的重要方式。 3. **异常处理**:Java的异常处理机制是通过try-catch-finally语句块来实现的。理解如何正确抛出和捕获异常,以及何时使用特定类型的异常,对于编写健壮的代码至关重要...

    动网转贴.zip易语言项目例子源码下载

    这个名为“动网转贴”的项目,是易语言编程实践中一个典型的例子,它为学习者提供了宝贵的实践素材,无论你是个人学习、学生毕业设计还是小团队的项目开发,都能从中获取灵感和参考。 首先,我们要理解易语言的核心...

    易语言源码动网转贴.rar

    5. **多线程处理**:为了提高用户体验,转贴操作可能会在后台线程中执行,这样不会阻塞主线程,保证界面的流畅性。 6. **异常处理**:考虑到网络环境的不稳定性和可能出现的错误,源码中应包含充分的异常处理机制,...

    凹丫丫ASP.NET新闻系统学习(转贴)

    【凹丫丫ASP.NET新闻系统学习(转贴)】是一个基于Visual Studio 2005(VS2005)和SQL Server 2005的教程资源,旨在帮助开发者学习如何构建一个基本的新闻信息发布系统。这个系统可能涵盖了新闻的添加、编辑、删除...

    Java SafeEngine API接口说明

    Java SafeEngine API接口说明 Java SafeEngine API接口说明是上海市数字证书认证中心有限公司开发的数字证书系统的接口说明,旨在提供给开发者使用Java语言开发安全的数字证书应用程序。该API接口提供了丰富的功能...

    易语言动网转贴

    综上所述,"易语言动网转贴"源码涵盖了文件操作、窗口交互、数据校验等多个方面,是实现论坛帖子迁移的一个实例,对于理解和学习易语言以及窗口编程有很大的帮助。通过深入研究这段代码,开发者可以了解到如何利用...

    易语言动网转贴.rar

    4. **数据交互**:易语言可以处理各种数据类型,并且具备数据库操作能力,方便与数据库进行交互,这在论坛转贴功能中非常重要,因为帖子数据通常存储在数据库中。 关于"动网转贴"的具体实现,可能涉及到以下知识点...

    动网转贴.e.rar

    这可能意味着文件包含了多个转贴的帖子,每个帖子可能有自己的元数据,如作者、发表时间、类别、回复数量等。 【压缩包子文件的文件名称列表】:虽然没有给出具体的子文件名称,但通常一个动网论坛的备份可能会包含...

    BFC UBB转贴器

    这是一个类似论坛转贴工具的小程序,可以将剪贴板中的HTML代码转换为论坛支持的UBB代码。 由于现在流行的转贴工具都是基于浏览器的,转换速度比较慢,还得打开浏览器才能使用(同时受到浏览器版本限制)。 <br...

Global site tag (gtag.js) - Google Analytics