java日期相关类实例详解

 更新时间:2017年10月27日 09:25:29   作者:FlyingZCC  
这篇文章主要介绍了java日期相关类实例详解,小编觉得还是挺不错的,这里分享给大家,供需要的朋友参考。

一、Date类

类 Date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。

Date类中很多方法已经过时,使用Calendar来替代。

常用方法有

long getTime()
void setTime(long time)

public class T01Date { 
  public static void main(String[] args) { 
    //getTime():返回的时间是距离1970年的毫秒数.值不受setTime()的影响 
    //date值受setTime()的影响 
    Date date=new Date(); 
    long current=date.getTime(); 
    System.out.println(current);//1472002479966 
    System.out.println(date);//Wed Aug 24 09:34:39 CST 2016 
    long time=current+1000*60*60*24;//时间设置为明日此时 
    date.setTime(time); 
    System.out.println(date.getTime());//1472002479966 
    System.out.println(current);//1472002479966 
    System.out.println(date);// Thu Aug 25 09:34:39 CST 2016 
  } 
} 

二、SimpleDateFormat

SimpleDateFormat根据特定的日期格式在Date和字符串之间转换

常用方法

String format(Date date):将日期按照指定格式转换成字符串
Date parse(String str):将字符串按照指定格式转换成Date

可以用来指定格式的字符

/** 
 * java.text.SimpleDateFormat 
 * 该类可以根据一个指定的日期格式将Date于String 
 * 之间相互转换 
 * @author zc 
 * 
 */ 
public class T02SimpleDateFormat { 
  public static void main(String[] args) throws ParseException { 
    Date now =new Date(); 
    //2016-08-12 09:55:23 
    //yyyy-MM-dd hh:ss:mm 
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy年MM月dd日 hh时ss分mm秒"); 
    String str = sdf.format(now); 
    System.out.println(str); 
    //a 居然能区分上下午汉字 
    String strDate="2012年12月20日下午12点20分30秒"; 
    SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd日ahh点ss分mm秒"); 
    Date date=sdf2.parse(strDate); 
    System.out.println(date); 
  } 
} 

三、Calendar

java.util.Calendar是抽象类,主要用来对时间分量进行计算。

常用方法

(1)Date和Calendar之间的转换

  //默认创建出来的Calendar的实现类表示当前系统时间 
    Calendar c=Calendar.getInstance(); 
    //将Calendar转换为Date 
    Date date=c.getTime(); 
    //Date->Calendar 
    /* 
     * void setTime(Date date) 
     * 该方法可以使当前Calendar表示给定的 
     * Date所表示的时间 
     * */ 
    c.setTime(date); 
  } 
} 

(2)getInstance()方法

Calendar是抽象类,其提供了一个工厂方法:Calendar getInstance()用来获取Calendar类型的实例

(3)get(int field)方法获取时间分量

import java.util.Calendar; 
/** 
 * Calendar提供了获取各个时间分量的值的方法 
 * @author zc 
 */ 
public class T05Calendar2 { 
  public static void main(String[] args) { 
    Calendar c=Calendar.getInstance(); 
    //获取年 
    int year=c.get(Calendar.YEAR); 
    System.out.println("year:"+year);//2016 
    //获取月:月从0开始!!!,0表示一月 
    int month=c.get(Calendar.MONTH); 
    System.out.println("month:"+month);//7 
    /* 
     * 和天相关的时间分量 
     * DATE,DAY_OF_MONTH:是一致的,表示月中的第几天 
     * DAY_OF_YEAR:表示年中的天 
     * DAY_OF_WEEK:表示周中的天 
     * 
     * */ 
    System.out.println(c.get(Calendar.DATE)); 
    System.out.println(c.get(Calendar.DAY_OF_MONTH)); 
    System.out.println(c.get(Calendar.DAY_OF_YEAR)); 
    System.out.println(c.get(Calendar.DAY_OF_WEEK)); 
    int dow=c.get(Calendar.DAY_OF_WEEK)-1; 
    String[] data={"日","一","二","三","四","五","六"}; 
    System.out.println("周"+data[dow]); 
    //获取小时,分钟,秒   HOUR_OF_DAY:24小时  HOUR:12小时  
    System.out.println(c.get(Calendar.HOUR_OF_DAY));//14 
    System.out.println(c.get(Calendar.HOUR));//2 
    System.out.println(c.get(Calendar.MINUTE)); 
    System.out.println(c.get(Calendar.SECOND)); 
  } 
} 

(4)set()方法设置时间分量

/** 
 * 设置时间分量 
 * @author zc 
 * 
 */ 
public class T06Calendar3 { 
  public static void main(String[] args){ 
    //表示2008-08-08 20:08:08 
    //设置年 
    Calendar c=Calendar.getInstance(); 
    c.set(Calendar.YEAR,2008); 
    //设置月,月从0开始 
    c.set(Calendar.MONTH,Calendar.AUGUST); 
    //设置日 
    c.set(Calendar.DATE, 8); 
    //设置时 
    c.set(Calendar.HOUR_OF_DAY,20); 
    //设置分 
    c.set(Calendar.SECOND,8); 
    //设置秒 
    c.set(Calendar.MINUTE,8); 
    System.out.println(c.getTime()); 
    //!!!设置的时间分量超出后,会自行进位 
  } 
} 

(5)add()方法在当前时间分量基础上修改时间分量

(6)getActualMaximum()获取某个时间分量所允许的最大值

/** 
 * 获取某个时间分量所允许的最大值 
 * @author zc 
 */ 
public class T07Calendar4 { 
  public static void main(String[] args) { 
    Calendar c=Calendar.getInstance(); 
    //查看当月共多少天 
    int days=c.getActualMaximum(Calendar.DAY_OF_MONTH); 
    System.out.println(days); 
    //查看今年多少天 
    int doy=c.getActualMaximum(Calendar.DAY_OF_YEAR); 
    System.out.println(doy); 
    int t=c.getActualMaximum(Calendar.MINUTE); 
    System.out.println(t); 
  } 
} 

四、Date、SimpleDateFormat和Calendar的一个综合实例

@Test 
  public void test01() throws ParseException{ 
    //要求用户输入一个日期,计算后,指定格式输出日期 
    /*String--SimpleDateFormat()-->Date 
    Date-->Calendar 
    使用Calendar进行相应计算 
    Calendar-->Date 
    Date--SimpleDateFormat-->String 
    */ 
    String input="2013-03-26"; 
     
    SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); 
    Date date=sdf.parse(input); 
    Calendar c=Calendar.getInstance(); 
    //set(),与add() 
    c.setTime(date); 
    c.add(Calendar.YEAR,1); 
    c.set(Calendar.MONTH,0); 
    c.set(Calendar.DAY_OF_WEEK,1); 
     
    date=c.getTime(); 
    SimpleDateFormat sdf2=new SimpleDateFormat("yyyy年MM月dd分hh时ss分mm秒"); 
    String strTime=sdf2.format(date); 
    System.out.println(strTime); 
  } 

总结

以上就是本文关于java日期相关类实例详解的全部内容,希望对大家有所帮助。感兴趣的朋友可以继续参阅本站:Java开发基础日期类代码详解Java编程实现时间和时间戳相互转换实例等,如有不足之处,欢迎留言指出。感谢朋友们对本站的支持!

相关文章

  • SpringBoot 配置文件总结

    SpringBoot 配置文件总结

    SpringBoot中提供一个全局的配置文件:application.properties,这个配置文件的作用就是,允许我们通过这个配置文件去修改Spring Boot自动配置的默认值,本文详细总结了SpringBoot配置文件,文中有详细的代码示例,感兴趣的同学可以参考下
    2023-05-05
  • Java OpenCV图像处理之背景消除

    Java OpenCV图像处理之背景消除

    GMM(高斯混合模型)是基于像素样本统计信息的背景表示方法,利用像素在较长时间内大量样本值的概率密度等统计信息表示别境,然后使用统计差分进行目标像素判断达到预期效果。本文将利用GMM方法实现图像背景消除,需要的可以参考一下
    2022-02-02
  • java并发之原子操作类和非阻塞算法

    java并发之原子操作类和非阻塞算法

    这篇文章主要为大家详细介绍了java并发之原子操作类和非阻塞算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • JSON 格式的弊端与解决方法(真实示例)

    JSON 格式的弊端与解决方法(真实示例)

    JSON 格式是目前最流行的数据交互格式,广泛应用于前后端分离的系统。但也有一些场合不适合使用 JSON 格式,这篇文章主要介绍了JSON 格式的弊端与解决方法,需要的朋友可以参考下
    2022-09-09
  • 用StopWatch优雅替代currentTimeMillis计算程序执行耗时

    用StopWatch优雅替代currentTimeMillis计算程序执行耗时

    别再用System.currentTimeMillis()计算程序执行耗时了,拥抱StopWatch优雅来优雅的计算,代码更简洁效率更高,本文带你了解StopWatch的使用
    2021-09-09
  • 详谈java编码互转(application/x-www-form-urlencoded)

    详谈java编码互转(application/x-www-form-urlencoded)

    下面小编就为大家带来一篇详谈java编码互转(application/x-www-form-urlencoded)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • SpringBoot构建Restful service完成Get和Post请求

    SpringBoot构建Restful service完成Get和Post请求

    这篇文章主要介绍了SpringBoot构建Restful service完成Get和Post请求的示例代码,感兴趣的朋友一起看看吧
    2017-08-08
  • java使用webuploader实现跨域上传详解

    java使用webuploader实现跨域上传详解

    目前初步接触JAVA图片上传,用的webuploader。已经跟后台对接上,但是有个问题就是跨域请求,通过查找相关资料终于实现了,下面这篇文章主要给大家介绍了关于java使用webuploader实现跨域上传的相关资料,需要的朋友可以参考下。
    2017-07-07
  • Gateway网关源码解析

    Gateway网关源码解析

    这篇文章主要介绍了Gateway微服务网关,负载均衡,熔断和限流,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Spring Data Jpa的四种查询方式详解

    Spring Data Jpa的四种查询方式详解

    这篇文章主要介绍了Spring Data Jpa的四种查询方式详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-12-12

最新评论