首页编程java编程java用什么处理日期,java中如何对日期进行格式处理

java用什么处理日期,java中如何对日期进行格式处理

编程之家2023-10-13112次浏览

大家好,今天小编来为大家解答java用什么处理日期这个问题,java中如何对日期进行格式处理很多人还不知道,现在让我们一起来看看吧!

java用什么处理日期,java中如何对日期进行格式处理

java中如何对日期进行格式处理

import java.text.SimpleDateFormat;

import java.util.Date;

public class Test{

java用什么处理日期,java中如何对日期进行格式处理

public static void main(String[] args){

SimpleDateFormat sdf= new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS");

String text= sdf.format(new Date());

java用什么处理日期,java中如何对日期进行格式处理

System.out.println(text);

}

}

输出:

2012-05-12 13:30:33:963

================================================

字母日期或时间元素表示示例

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

具体可查看JDK API SimpleDateFormat类

java语言中的date类及方法的用法

Date和Calendar是Java类库里提供对时间进行处理的类,由于日期在商业逻辑的应用中占据着很重要的地位,所以在这里想对这两个类进行一个基本的讲解,由于技术有限,不到之处请指正。

Date类顾名思义,一看就知道是和日期有关的类了,这个类最主要的作用就是获得当前时间了,然而这个类里面也具有设置时间以及一些其他的功能,可是由于本身设计的问题,这些方法却遭到众多批评,而这些遭受批评的功能都已移植到另外一个类里面,这就是今天要讲到的第二个类Calendar里面。

在讲两个类之前,这里又不能不多提一个类,那就是DateFormat类,这个类是用来格式化日期的,稍后也会讲到。

首先,让我们来看一个获取当前时间的例子:

Date date= new Date();

System.out.println(date.getTime());上面的语句首先创建了Date的一个对象,接着使用getTime方法获得当前的时间,但是注意了,输出后的结果确实一串长整型的数字,这是为什么?实际上这是系统根据当前时间计算出来的一个long型的数,至于是如何计算出来的就不在本文中讲述了,那既然这样的话又如何显示正确的时间呢?这就要利用到上面的DateFormat类了,这个类是一个基类,它有一个子类是SimpleDateFormat,具体用法请看下面的代码:

Date date= new Date();

SimpleDateFormat dateFm= new SimpleDateFormat("EEEE-MMMM-dd-yyyy");

System.out.println(dateFm.format(date));这段代码开始创建了一个Date的对象,用来获取当前时间,而重点就在于后面的SimpleDateFormat对象,这个对继承了DateFormat,利用format方法对Date对象进行格式化,然后输出,而格式的定制是由用户定制的,EEEE代表星期,MMMM代表月份,而dd代表日,yyyy代表年。使用这个方法就可以根据用户自定义的格式进行输出时间。

上面介绍了由用户自定义格式的输出时间,下面将来介绍通过JAVA类库提供的标准格式输出时间,这就要用到DateFormat类了,请看以下代码:

Date date= new Date();

DateFormat dateFm= DateFormat.getDateTimeInstance(DateFormat.SHORT,

DateFormat.SHORT);

System.out.println(dateFm.format(date));这里使用的方法和用户自定义的方法差不多,只是这里使用的是一个抽象类,由于DateFormat是一个抽象类,所以它不能通过构造函数构造对象,在这里是通过getDateTimeInstance()方法获得该对象,而所传递的参数就是DateFormat里面定义的一些常量,系统根据这些常量输出当前时间,由于这里使用的是getDateTimeInstance方法,所以将传递两个常量参数,用来分别格式化日期和当前的时间。

上面讲述了如何获得系统时间以及如何格式化输出,那如果想获取或者设置时间当中的某一部分又该如何呢?例如年,月,日。这就要靠Calendar这个类了,这个类也是一个抽象类,它有一个子类GregorianCalendar,接下来我会利用这个子类来演示这个过程,请看以下代码:

DateFormat dateFormat= DateFormat.getDateInstance(DateFormat.FULL);

GregorianCalendar cal= new GregorianCalendar();

cal.setTime(new Date());

System.out.println("System Date:"+ dateFormat.format(cal.getTime()));

cal.set(GregorianCalendar.DAY_OF_WEEK,GregorianCalendar.FRIDAY);

System.out.println("After Setting Day of Week to Friday:"+

dateFormat.format(cal.getTime()));

这段代码当中,首先创建了一个DateFormat对象进行格式设置,接着创建了一个GregorianCalendar对象cal,接着使用cal.setTime()方法设置cal对象中的时间为当前时间,然后通过format格式化由cal.getTime()返回的时间进行输出,后面利用set方法设置cal的日期为当前星期的FRIDAY,此时cal中存储的时间就是这个星期五的该时刻,而后面利用format格式化输出,假如当前时间为2005年1月27日星期4的11点30分,那么最后将那句将会输出2005年1月28日星期5的11点30分。

如何在Java 8中愉快地处理日期和时间

Java 8新增了LocalDate和LocalTime接口,为什么要搞一套全新的处理日期和时间的API?因为旧的java.util.Date实在是太难用了。

java.util.Date月份从0开始,一月是0,十二月是11,变态吧!java.time.LocalDate月份和星期都改成了enum,就不可能再用错了。

java.util.Date和SimpleDateFormatter都不是线程安全的,而LocalDate和LocalTime和最基本的String一样,是不变类型,不但线程安全,而且不能修改。

java.util.Date是一个“万能接口”,它包含日期、时间,还有毫秒数,如果你只想用java.util.Date存储日期,或者只存储时间,那么,只有你知道哪些部分的数据是有用的,哪些部分的数据是不能用的。在新的Java 8中,日期和时间被明确划分为LocalDate和LocalTime,LocalDate无法包含时间,LocalTime无法包含日期。当然,LocalDateTime才能同时包含日期和时间。

新接口更好用的原因是考虑到了日期时间的操作,经常发生往前推或往后推几天的情况。用java.util.Date配合Calendar要写好多代码,而且一般的开发人员还不一定能写对。

LocalDate

看看新的LocalDate怎么用:

//取当前日期:

LocalDate today= LocalDate.now();//-> 2014-12-24

//根据年月日取日期,12月就是12:

LocalDate crischristmas= LocalDate.of(2014, 12, 25);//-> 2014-12-25

//根据字符串取:

LocalDate endOfFeb= LocalDate.parse("2014-02-28");//严格按照ISO yyyy-MM-dd验证,02写成2都不行,当然也有一个重载方法允许自己定义格式

LocalDate.parse("2014-02-29");//无效日期无法通过:DateTimeParseException: Invalid date

日期转换经常遇到,比如:

//取本月第1天:

LocalDate firstDayOfThisMonth= today.with(TemporalAdjusters.firstDayOfMonth());// 2014-12-01

//取本月第2天:

LocalDate secondDayOfThisMonth= today.withDayOfMonth(2);// 2014-12-02

//取本月最后一天,再也不用计算是28,29,30还是31:

LocalDate lastDayOfThisMonth= today.with(TemporalAdjusters.lastDayOfMonth());// 2014-12-31

//取下一天:

LocalDate firstDayOf2015= lastDayOfThisMonth.plusDays(1);//变成了2015-01-01

//取2015年1月第一个周一,这个计算用Calendar要死掉很多脑细胞:

LocalDate firstMondayOf2015= LocalDate.parse("2015-01-01").with(TemporalAdjusters.firstInMonth(DayOfWeek.MONDAY));// 2015-01-05

LocalTime

LocalTime只包含时间,以前用java.util.Date怎么才能只表示时间呢?答案是,假装忽略日期。

LocalTime包含毫秒:

LocalTime now= LocalTime.now();// 11:09:09.240

你可能想清除毫秒数:

LocalTime now= LocalTime.now().withNano(0));// 11:09:09

构造时间也很简单:

LocalTime zero= LocalTime.of(0, 0, 0);// 00:00:00

LocalTime mid= LocalTime.parse("12:00:00");// 12:00:00

时间也是按照ISO格式识别,但可以识别以下3种格式:

12:00

12:01:02

12:01:02.345

JDBC

最新JDBC映射将把数据库的日期类型和Java 8的新类型关联起来:

SQL-> Java

--------------------------

date-> LocalDate

time-> LocalTime

timestamp-> LocalDateTime

再也不会出现映射到java.util.Date其中日期或时间某些部分为0的情况了。

最后总结一下,怎么才能愉快地处理日期和时间?答案是:立刻升级到Java 8!

文章分享结束,java用什么处理日期和java中如何对日期进行格式处理的答案你都知道了吗?欢迎再次光临本站哦!

java中 api是什么意思?JAVA的API是什么意思村上春树再次陪跑(村上春树 重逢)