资讯专栏INFORMATION COLUMN

Java日期格式化

PingCAP / 1175人阅读

摘要:瞬间可用毫秒值来表示,它是距历元即格林威治标准时间年月日的,格里高利历的偏移量。创建对象常用方法返回当前对象的一些日期信息获得当前日期的对象根据日历的规则,为给定的日历字段添加或减去指定的时间量。

日期格式化前言

Date类表示特定的瞬间精确到毫秒,不过从API可以看出很多的方法已经废弃了,这个类已经在过多使用了,不过还是需要了解一下的,为了后面的学习做铺垫

构造方法

new Date()


long getTime() 返回计算机上面的时间,返回的是毫秒

setTime(long s) 用给定的毫秒值s设置时间

实例

    Date date=new Date();
        System.out.println(date.getTime());

SimpleDateFormat

这个类是一个简单的格式化日期的类,继承与DateFormat,相对于父类来说使用简单

构造方法

new SimpleDateFormat()  使用默认的格式化模板创建对象

new SimpleDateFormat(String pattern)   使用指定的格式化模板创建对象

常用的方法

String format(Date date)   将给定的日期格式化指定的模板的样式,比如2017-01-29 23:22:11

applyPattern(String pattern) 将给定的格式应用于此日期的格式,相当于直接使用new Date(String pattern)

Date parse(String d)  将给定的格式化的日期格式字符串转换成Date对象,需要注意的是转化的时候定义的模板一定要和字符串的日期格式的模板一样,否则将会解析不正确的形式

常用的日期格式化的模板实例

使用默认的模板格式化日期

        SimpleDateFormat dateFormat=new SimpleDateFormat();   //默认的格式
            String formateString=dateFormat.format(date);   //格式化当前的日期
            System.out.println(formateString);

使用指定的模板格式化日期

        String model="yyyy-MM-dd-FF  HH:mm:ss";  //指定格式化的模板
            SimpleDateFormat dateFormat2=new SimpleDateFormat(model);
            System.out.println(dateFormat2.format(date));

将格式化的日期转换成Date类型的,使用的parse(String s),需要注意的是,下面定义的模板一定要和给定的格式化后的日期格式一样,否则转换后Date类型的毫秒值可能不正确

        String d = "2017-06-12 22:34:19";   //给出格式化后的日期
            String pattern = "yyyy-MM-dd HH:mm:ss";  //按照上面的日期格式定义模板,这个一定要完全和上面的一样,否则转换不正确
            SimpleDateFormat dateFormat = new SimpleDateFormat(pattern);
            try {
                Date date = dateFormat.parse(d);   //解析成Date类型
                System.out.println(dateFormat.format(date));
            } catch (ParseException e) {
                System.err.println("解析错误");
    
            }

综合使用:计算时间差

        Scanner scanner=new Scanner(System.in);
            System.out.println("请输入年-月-日");
            String startTime=scanner.next();
            System.out.println("请输入结束时间(年-月-日)");
            String endTime=scanner.next();
            String moudle="yyyy-MM-dd";   //定义时间模板
            //创建指定模板的解析
            SimpleDateFormat dateFormat=new SimpleDateFormat(moudle);
            Date startDate=dateFormat.parse(startTime);//解析开始时间
            Date endDate =dateFormat.parse(endTime);//解析结束时间
            long time=startDate.getTime()-endDate.getTime();  //返回两个时间的差,毫秒
            int day=(int)(time/1000/60/60/24);  //转化为天数,1秒等于1000毫秒,一分钟等于60秒,一小时等于60分钟,一天等于24小时
            System.out.println(day);

Calendar

Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

创建对象

Calendar.getInstance()

常用方法

int get(int field)  返回当前对象的一些日期信息

Date getTime()  获得当前日期的Date对象

add(int field,int amount)  根据日历的规则,为给定的日历字段添加或减去指定的时间量。例如,要从当前日历时间减去 5 天,可以通过调用以下方法做到这一点:add(Calendar.DAY_OF_MONTH, -5)。

setTime(Date date)  使用给定的Date对象,设置Calendar时间

实例

get方法获取一些字段的值

        Calendar calendar = Calendar.getInstance(); // 创建对象
            System.out.println(calendar.get(Calendar.YEAR));// 获取年份
            System.out.println(calendar.get(Calendar.MONTH) + 1);// 月,从0开始,即是输出5表示6月
            System.out.println(calendar.get(Calendar.DATE));// 获取一个月中的第几天
            System.out.println(calendar.get(Calendar.HOUR)); // 小时
            System.out.println(calendar.get(Calendar.MINUTE)); // 分钟
            System.out.println(calendar.get(Calendar.SECOND)); // 秒
            System.out.println(calendar.get(Calendar.AM_PM)); // 获得是上午还是下午AM=0,PM=1
            System.out.println(calendar.get(Calendar.DAY_OF_MONTH)); // 一个月中的第几天
            System.out.println(calendar.get(Calendar.DAY_OF_WEEK)); // 一周中的第几天,星期日是第一天
            System.out.println(calendar.get(Calendar.DAY_OF_YEAR));// 一年中的第几天
            System.out.println(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月");
            }

Date getTime()方法的使用

        Calendar calendar=Calendar.getInstance();
            Date date=calendar.getTime();   //获得Date对象
            String pattern="yyyy-MM-dd  HH:mm:ss";
            SimpleDateFormat dateFormat=new SimpleDateFormat(pattern);
            System.out.println(dateFormat.format(date));

add(int field,int amount)方法的使用

        Calendar calendar=Calendar.getInstance();
            calendar.add(Calendar.DATE, -2);
            System.out.println(calendar.get(Calendar.DATE));

综合实例:计算出当前的准确日期

        Calendar calendar = Calendar.getInstance();
            int year = calendar.get(Calendar.YEAR);
            int month = calendar.get(calendar.MONTH) + 1; // 从0开始算,因此加1
            int date = calendar.get(Calendar.DATE);
            int week = calendar.get(Calendar.WEEK_OF_MONTH) + 1; // 从周日开始算,因此加1
            int hour = calendar.get(Calendar.HOUR);
            int minute = calendar.get(Calendar.MINUTE);
            int seconds = calendar.get(Calendar.SECOND);
            if (calendar.get(Calendar.AM_PM) == Calendar.AM) {
    
                System.out.println("现在是" + year + "年" + month + "月" + date + "号"
                        + "星期" + week + "上午" + hour + "点" + minute + "分" + seconds
                        + "秒");
    
            } else {
                System.out.println("现在是" + year + "年" + month + "月" + date + "号"
                        + "星期" + week + "下午" + hour + "点" + minute + "分" + seconds
                        + "秒");
            }

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

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

相关文章

  • 20 个案例教你在 Java 8 中如何处理日期和时间?

    摘要:前言前面一篇文章写了如何安全的使用里面介绍了如何处理日期时间,以及如何保证线程安全,及其介绍了在中的处理时间日期默认就线程安全的类。引入了全新的日期时间格式工具,线程安全而且使用方便。 前言 前面一篇文章写了《SimpleDateFormat 如何安全的使用?》, 里面介绍了 SimpleDateFormat 如何处理日期/时间,以及如何保证线程安全,及其介绍了在 Java 8 中的处...

    Rango 评论0 收藏0
  • Java8新特性之日期处理

    摘要:处理日期日历和时间的不足之处将设定为可变类型,以及的非线程安全使其应用非常受限。最完整的日期时间,包含时区和相对或格林威治的时差。获取当前的日期中的用于表示当天日期。 简介 伴随 lambda表达式、streams 以及一系列小优化,Java 8 推出了全新的日期时间API。 Java处理日期、日历和时间的不足之处:将 java.util.Date 设定为可变类型,以及 SimpleD...

    Airy 评论0 收藏0
  • Java语言的Calendar和Date类

    摘要:转载语言的和类语言的日历日期,和日期格式组成了标准的一个基本但是非常重要的部分。值得注意的是我们使用了构造函数创建一个日期对象,这个构造函数没有接受任何参数,而这个构造函数在内部使用了方法来从系统获取日期。 「转载」Java语言的Calendar和Date类 Java 语言的Calendar(日历),Date(日期),和DateFormat(日期格式)组成了Java标准的一个基本但是...

    elarity 评论0 收藏0
  • 全面解析Java日期时间API

    摘要:类是一个抽象类,它为特定瞬间与一组诸如等日历字段之间的转换提供了一些方法,并为操作日历字段例如获得下星期的日期提供了一些方法。是不变的日期时间对象代表一个日期时间,往往被视为年月日时分秒。获得实例的日期和时间。 时区 GMT(Greenwich Mean Time):格林尼治时间,格林尼治标准时间的正午是指当太阳横穿格林尼治子午线时(也就是在格林尼治上空最高点时)的时间。 UTC(U...

    robin 评论0 收藏0
  • Java8实战》-第十二章笔记(新的日期和时间API)

    摘要:合并日期和时间这个复合类名叫,是和的合体。截至目前,我们介绍的这些日期时间对象都是不可修改的,这是为了更好地支持函数式编程,确保线程安全,保持领域模式一致性而做出的重大设计决定。 新的日期和时间API Java的API提供了很多有用的组件,能帮助你构建复杂的应用。不过,Java API也不总是完美的。我们相信大多数有经验的程序员都会赞同Java 8之前的库对日期和时间的支持就非常不理想...

    khlbat 评论0 收藏0

发表评论

0条评论

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