java日期时间处理

一.简介
1.java中常用的日期有三种(精确到毫秒):
A.long--毫秒数
B.Date--日期
C.Calendar--日历、抽象类
2.Java中日期的经常有一下五个方面:
A.创建日期
B.日期格式化显示
C.日期的转换(主要是和字符串之间的相互转换)
D.日期中年.月.日.时.分.秒.星期.月份等获取。
E.日期的大小比较.日期的加减。
二.创建时间:
1.long:
long now = System.currentTimeMillis();
2.Date:
Date now = new Date(); //默认为当前时间
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowStr = sdf.format(now);
System.out.println("格式化后的日期:" + nowStr);
System.out.println("Date类型日期:" + now);
System.out.println("当前时间毫秒数:" + now.getTime()); //返回Date类型
3.Calendar:
Calendar now1 = Calendar.getInstance(); //默认为当前时间
now1.setTimeZone(TimeZone.getTimeZone("GMT+8:00")); //设置时区 北京时间
now1.set(2016, 10, 30, 15, 55, 44); //陷阱:Calendar的月份是0~11
Calendar now2 = new GregorianCalendar(); //默认为当前时间
Calendar now3 = new GregorianCalendar(2016, 10, 30, 15, 55, 44); //陷阱:Calendar的月份是0~11
4.获取时间:
System.out.println("年: " + now.get(Calendar.YEAR)); //返回int类型
System.out.println("月: " + (now.get(Calendar.MONTH) + 1)); //返回int类型,注意:月份从零开始
System.out.println("日: " + now.get(Calendar.DAY_OF_MONTH)); //返回int类型
System.out.println("时: " + now.get(Calendar.HOUR_OF_DAY)); //返回int类型
System.out.println("分: " + now.get(Calendar.MINUTE)); //返回int类型
System.out.println("秒: " + now.get(Calendar.SECOND)); //返回int类型
System.out.println("Date类型日期:" + now.getTime()); //返回Date类型
System.out.println("当前时间毫秒数:" + now.getTimeInMillis()); //返回long类型
5.注意:
A.Calendar的星期是从周日开始的,常量值为1。
B.Calendar的月份是从一月开始的,常量值为0。
三.格式转换
1.long转换成Date
A.new Date(long);
B.Date date = new Date();
date.setTime(long);
2.Date转换成Calendar
Calendar cal = Calendar.getInstance();
cal.setTime(date);
3.Date转换成long
long l = date.getTime();
4.Calendar转换成Date
Date date = cal.getTime();
5.Date转换成String
Date now = new Date();
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String nowStr = sdf.format(now);
6.String转换成Date
DateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date date = sdf.parse("2016-2-17 11:20:50");
五.日期比较大小
1.Date:
A.before.after.equals
B.date1.compareTo(date2) //返回值小于0表示小于,等于0表示等于,大于0表示大于
2.Calendar:
A.before.after.equals
B.cal1.compareTo(cal2) //返回值小于0表示小于,等于0表示等于,大于0表示大于
3.计算时间差:(Date和Calendar都转换成long来进行比较)
long between=(end.getTime()-begin.getTime())/1000;//除以1000是为了转换成秒
long day=between/(24*3600);
long hour=between%(24*3600)/3600;
long minute=between%3600/60;
long second=between%60/60;
System.out.println(""+day+"天"+hour+"小时"+minute+"分"+second+"秒");
六.日期加减
1.Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -1);
System.out.println("去年是" + cal.get(Calendar.YEAR + "年"));
2.每月最后一天(Actual:实际的)
Calendar cal = Calendar.getInstance();
int maxDay=cals.getActualMaximum(Calendar.DAY_OF_MONTH);
DateFormat formatter3=new SimpleDateFormat("yyyy-MM-"+maxDay);
System.out.println(formatter3.format(cal.getTime()));
七.附
1.compareTo是Compareable接口的一个方法,主要用于规定创建对象的大小关系,该对象要实现compareable接口,当a.compareTo(b)>0时,则a>b,当a.compareTo(b)<0时,a<b,当a.compareTo(b)=0时,a=b。
2.选择Comparable接口还是Comparator?
Comparable:一个类实现了Comparable接口则表明这个类的对象之间是可以相互比较的,这个类对象组成的集合就可以直接使用sort方法排序。用Comparable简单, 只要实现Comparable 接口的对象直接就成为一个可以比较的对象,但是需要修改源代码。
Comparator:Comparator可以看成一种算法的实现,将算法和数据分离。用Comparator的好处是不需要修改源代码,而是另外实现一个比较器,当某个自定义的对象需要作比较的时候,把比较器和对象一起传递过去就可以比大小了。
3.延时方法:
A.Thread.currentThread().sleep(500);
B.Timer timer=new Timer();//实例化Timer类 更精确
timer.schedule(new TimerTask(){
public void run(){
System.out.println("退出");
this.cancel();
}
},500);

时间: 2024-08-08 09:29:23

java日期时间处理的相关文章

Java 日期时间 Date类型,long类型,String类型表现形式的转换 (转)

Java 日期时间 Date类型,long类型,String类型表现形式的转换 1.java.util.Date类型转换成long类型java.util.Date dt = new Date();System.out.println(dt.toString());   //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000;   //得到秒数,Date类型的getTime()返回毫秒数 2.由long类型转换成Date类型SimpleDat

Java 日期时间处理

Java 日期时间处理 Date java.util.Date对象表示一个精确到毫秒的瞬间; 但由于Date从JDK1.0起就开始存在了,历史悠久,而且功能强大(既包含日期,也包含时间),所以他的大部分构造器/方法都已Deprecated,因此就不再推荐使用(如果贸然使用的话,可能会出现性能/安全方面的问题);下面我仅介绍它还剩下的为数不多的几个方法(这些方法的共同点是Date与毫秒值的转换): 构造器 Date(): 在底层调用System.currentTimeMillis()作为日期参数.

Java日期时间,以及相互转换

Java日期时间,以及相互转化 1 package com.study.string; 2 3 import java.text.ParseException; 4 import java.text.SimpleDateFormat; 5 import java.util.Calendar; 6 import java.util.Date; 7 import java.util.GregorianCalendar; 8 9 public class DateBase { 10 11 public

Java日期时间使用总结[转载]

Java日期时间使用总结 一.Java中的日期概述 日期在Java中是一块非常复杂的内容,对于一个日期在不同的语言国别环境中,日期的国际化,日期和时间之间的转换,日期的加减运算,日期的展示格式都是非常复杂的问题. 在Java中,操作日期主要涉及到一下几个类: 1.java.util.Date 类 Date 表示特定的瞬间,精确到毫秒.从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和分析日期字符串.Date 中的把日期解释

Java 日期时间 Date类型,long类型,String类型表现形式的转换

1.java.util.Date类型转换成long类型java.util.Date dt = new Date();System.out.println(dt.toString());   //java.util.Date的含义long lSysTime1 = dt.getTime() / 1000;   //得到秒数,Date类型的getTime()返回毫秒数 2.由long类型转换成Date类型SimpleDateFormat sdf= new SimpleDateFormat("MM/dd

Java日期时间操作源码示例大全

在研发闲暇时间,将开发过程比较重要的一些代码段做个记录,如下代码内容是关于Java日期时间操作示例大全的代码,应该是对小伙伴们有所用途. 日期类 import java.util.Calendar; public class VeDate { public static Date getNowDate() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd H

Java日期时间以及日期相互转换_java - JAVA

文章来源:嗨学网 敏而好学论坛www.piaodoo.com 欢迎大家相互学习 Java日期时间,以及相互转化,供大家参考,具体内容如下 package com.study.string; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; p

Java日期时间API系列8-----Jdk8中java.time包中的新的日期时间API类的LocalDate源码分析

目录 0.前言 1.TemporalAccessor源码 2.Temporal源码 3.TemporalAdjuster源码 4.ChronoLocalDate源码 5.LocalDate源码 6.总结 0.前言 通过前面Java日期时间API系列6-----Jdk8中java.time包中的新的日期时间API类中主要的类关系简图如下: 可以看出主要的LocalDate, LocalTime, LocalDateTime, Instant都是实现相同的接口,这里以LocalDate为例分析jav

Java日期时间API系列11-----Jdk8中java.time包中的新的日期时间API类,使用java8日期时间API重写农历LunarDate

通过Java日期时间API系列7-----Jdk8中java.time包中的新的日期时间API类的优点,java8具有很多优点,现在网上查到的农历转换工具类都是基于jdk7及以前的类写的,下面使用java新的日期时间API重写农历LunarDate. package com.xkzhangsan.time; import java.time.Instant; import java.time.LocalDate; import java.time.LocalDateTime; import ja

Java日期时间API系列17-----Jdk8中java.time包中的新的日期时间API类,java日期计算4,2个日期对比,获取相差年月日部分属性和相差总的天时分秒毫秒纳秒等

通过Java日期时间API系列9-----Jdk8中java.time包中的新的日期时间API类的Period和Duration的区别 ,可以看出java8设计非常好,新增了Period和Duration类,专用于对比2个时间场景: Period,可以获取2个时间相差的年月日的属性. Duration,可以获取2个时间相差总的天时分秒毫秒纳秒. 下面应用: /** * 获取2个日期的相差年月天的年数部分 * @param startInclusive * @param endExclusive