资讯专栏INFORMATION COLUMN

Java基础知识整理之操作日期

leap_frog / 1990人阅读

摘要:基础知识之日期操作简介中的时间使用标准类库的其表示特定的瞬间,精确到毫秒。常用的方法实例化对象简介是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化日期文本解析文本日期和规范化。

Java基础知识之日期操作 1. Date 简介
Java中的时间使用标准类库的java.util.Date,其表示特定的瞬间,精确到毫秒。
是用距离一个固定时间点的毫秒数(可正可负,long类型)表达一个特定的时间点。    
因为Date的设计具有"千年虫"以及"时区"的问题,所以Date中的大部分方法已经不建议使用了,它们都被"java.util.Calendar"类所取代,从API中就可以发现,好多方法都已经废弃掉了。    
常用的方法:getTime() 、setTime()
//实例化对象
Date date = new Date();
System.out.println(date.getTime());
2. SimpleDateFormat 简介
SimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析日期的具体类。它允许进行格式化(日期 -> 文本)、解析(文本 -> 日期)和规范化。经常使用来格式化日期。
常用的方法:formate(Date date)、 parse(String s)
 //格式化时间字符串
 String StrD ="2017-04-20 11:22:45";
 SimpleDateFormat sdfd =new SimpleDateFormat("yyy-MM-dd HH:mm:ss");
 Date dat =sdfd.parse(StrD);
 System.out.println(dat);
3. Calendar 简介
java.util.Calendar 是一个抽象类,用于封装日历信息,其主要作用在于其方法可以对时间分量进行运算。    
它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了方法。
常用的方法: getInstance()、set() 、get()、getActualMaximum()、add()、gettime()、setTime(Date)
//设置当前的时间为 2017-04-25
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR,2017);
calendar.set(Calendar.MONTH,04);

 /*
  * 对于几号而言 calendar 提供了两个时间分量
  * 意义完全相同,选择其中的一个就好
  * DAY_OF_MONTH
  * DATE
  */
calendar.set(Calendar.DATE,25);
calendar.set(Calendar.DAY_OF_MONTH, 25);
综合实践 1. 获取当前时间
public String getCurrentDate(){
    String nowDate = "";
        
    SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
        nowDate = df.format(new Date());// new Date()为获取当前系统时间
        
        return nowDate;
    }
2. 获取详细的时间
    /**
     * 获取详细的时间
     */
    public void getDateDetail() {
        Calendar calendar = Calendar.getInstance(); // 创建对象 = Calendar.getInstance();// 可以对每个时间域多带带修改
        int year = calendar.get(Calendar.YEAR);
        int month = calendar.get(Calendar.MONTH) + 1;// 月,从0开始,即是输出5表示6月
        int date = calendar.get(Calendar.DATE);
        int hour = calendar.get(Calendar.HOUR_OF_DAY);
        int minute = calendar.get(Calendar.MINUTE);
        int second = calendar.get(Calendar.SECOND);
        int am_pm = calendar.get(Calendar.AM_PM); // 获得是上午还是下午AM=0,PM=1
    
        int dayOfMonth = calendar.get(Calendar.DAY_OF_MONTH);    // 一个月中的第几天
        int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);     // 一周中的第几天,星期日是第一天
        int dayOfYear = calendar.get(Calendar.DAY_OF_YEAR);        // 一年中的第几天
        int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);         // 一天中的第几小时

        if (calendar.get(Calendar.AM_PM) == Calendar.AM) {
            System.out.println("现在是上午");
        }

        if (calendar.get(Calendar.MONTH) + 1 == Calendar.JULY) {
            System.out.println("现在是6月");
        }
        
        System.out.println(year + "/" + month + "/" + date + " " + hour + ":"+ minute + ":" + second);
    }
3. 日期的加减法
    /**
     * 日期的 add()
     * 日期加上一个正数就是时间向后(未来)移动,日期加上负数就是向前(过去)移动
     * 当日期加到 32 的时候,就会顺移到下一个月
     */
    public void addDate(){
        DateFormat df = new SimpleDateFormat("yyyy-MM-dd EE hh:mm:ss");    
        Calendar c = Calendar.getInstance();    //获取当前日期的实例
        
        c.add(Calendar.MONTH, 1);    //当前时间加一个月
        //c.add(Calendar.MONTH, -1);    //当前时间减一个月
        System.out.println(df.format(c.getTime()));     //格式化输出当前的时间
        
        c.add(Calendar.HOUR, 3); // 当前时间加 3个小时
        //c.add(Calendar.HOUR, -3); // 当前时间减 3个小时
        System.out.println(df.format(c.getTime())); 
        
        c.add(Calendar.YEAR, 1);    //当前时间加一年
        //c.add(Calendar.YEAR, -1);    //当前时间减一年
        System.out.println(df.format(c.getTime()));
        
         c.add(Calendar.DAY_OF_WEEK, 7); // 当前时间加7天 
         //c.add(Calendar.DAY_OF_WEEK, -7); // 当前时间减7天 
         System.out.println(df.format(c.getTime()));
    }
4. 日期的比较
    /**
     * 日期比较
     */
    public void compareDate(){
        //日期
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString_01 = "2017-01-01 11:11:11";
        String dateString_02 = "2016-01-02 11:11:11";
        
        try {
           Date date_01 = sdf.parse( dateString_01 );
           Date date_02 = sdf.parse( dateString_02 );
           
           System.out.println( date_01.before(date_02) ); //true,当 date_01 小于 date_02 时,为 true,否则为 false
           System.out.println( date_02.after(date_01) ); //true,当 date_02 大于 date_01 时,为 true,否则为 false
           
           System.out.println( date_01.compareTo(date_02) ); //-1,当 date_01 小于 date_02 时,为 -1
           System.out.println (date_02.compareTo(date_01) ); //1,当 date_02 大于 date_01 时,为 1
           System.out.println( date_02.compareTo(date_02) ); //0,当两个日期相等时,为 0
               
        } catch (ParseException e) {
           e.printStackTrace();
        }
    }
5. 计算两个日期相隔多少天
    /**
     * 计算日期相隔多少天
     * @throws ParseException
     */
    public void calculateDate() throws ParseException{
        SimpleDateFormat format  = new SimpleDateFormat("yyyy-MM-dd");
        Date beginDate= format.parse("2017-06-24");
        Date endDate= format.parse("2017-06-30");
        
        long day = ( endDate.getTime()-beginDate.getTime() )/(24*60*60*1000); 
        System.out.println(day);
    }

由于 Java8 出了新特性,附上链接:Java8新特性之日期处理

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70126.html

相关文章

  • Java基础知识整理操作Redis(二)

    摘要:操作之连接以及简单操作下载对应的驱动包下载创建一个连接类连接主机地址端口号登录密码连接服务器权限认证连接完成会返回缓存链接错误查询所有中的查询所有的为通配符清除所有的中的是清除所有的的命令如果清理完成,会返回完整的代码声明对象测试地址端口密 Java操作Redis之连接以及简单操作 1.下载对应的驱动包 下载 jedis.jar :https://mvnrepository.com/a...

    mingde 评论0 收藏0
  • 国外程序员整理Java资源大全

    摘要:日期和时间处理日期和时间的函数库。使用中可观察序列,创建异步基于事件应用程序的函数库。为分布式系统提供延迟和容错处理。发布使用本机格式分发应用程序的工具。将程序资源和打包成和的本机文件。图像处理用来帮助创建评估或操作图形的函数库。 好资源要分享原文 译者 唐尤华 翻译自 github akullpp 构建 这里搜集了用来构建应用程序的工具。 Apache Maven:Mave...

    chengtao1633 评论0 收藏0
  • Java基础知识整理操作Redis(一)

    摘要:是一个由写的存储系统。是一个开源的使用语言编写遵守协议支持网络可基于内存亦可持久化的日志型数据库,并提供多种语言的。它通常被称为数据结构服务器,因为值可以是字符串哈希列表集合和有序集合等类型。 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵...

    honhon 评论0 收藏0
  • Java基础知识整理操作Redis(一)

    摘要:是一个由写的存储系统。是一个开源的使用语言编写遵守协议支持网络可基于内存亦可持久化的日志型数据库,并提供多种语言的。它通常被称为数据结构服务器,因为值可以是字符串哈希列表集合和有序集合等类型。 REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵...

    2shou 评论0 收藏0

发表评论

0条评论

leap_frog

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<