java获取时间并进行计算


前言

SimpleDateFormat使用介绍

提示:以下是本篇文章正文内容,下面案例可供参考

一、SimpleDateFormat是什么?

如果你对java源码比较了解。你会发现java对文字,数字的格式化,是有一个公共的父类的Format
NumberFormat和DecimalFormat都是它的子类关于数字的
DateFormat和SimpleDateFormat也是它的子类关于文字的

要特别注意的是 NumberFormat和DecimalFormat是线程不安全的。 这意味你如果同时有多个线程操作一个format实例对象,会出现意想不到的结果。

解决方法有两个:

  1. 为每个线程都创建一个 format实例,通过ThreadLocal 来给每个线程都产生一个本地实例
  2. 进行外部同步,这个就可以通过关键词 synchronized来进行同步。
  3. 第一种方法 **比较占用内存多,但是速度快,效率高。并发。**第二种方法 **占用内存少,效率低,耗费时间长,毕竟要排队嘛,串行。**具体取舍,看项目的情况

简单通俗来说:就是用来操作一些数字文字的格式的

详细的可以参考api手册上的内容

二、使用步骤

1.定义对象及属性

代码如下(示例):

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
Calendar calendar = Calendar.getInstance();
Calendar cal = Calendar.getInstance();
String dateString = "";
String dateStringTQ = "";

2.业务代码

代码如下(示例):

  if (datetype.equals("year")) {
            datevalue1 = datevalue1 + "-01-01";
            datevalue2 = datevalue2 + "-12-31";
            dateString = Integer.parseInt(datevalue1.substring(0, 4)) - 1 + datevalue1.substring(4);
            dateStringTQ = Integer.parseInt(datevalue2.substring(0, 4)) - 1 + datevalue2.substring(4);
        } else if (datetype.equals("month")) {
            int month = Integer.parseInt(datevalue1.split("-")[1]); //月
            cal.set(Calendar.MONTH, month); //设置当前月的上一个月
            int lastDay = cal.getMinimum(Calendar.DATE); //获取月份中的最小值,即第一天
            if(lastDay<10){
                datevalue1 = datevalue1+"-"+"0"+lastDay;
            }else {
                datevalue1 = datevalue1+"-"+lastDay;
            }

            cal.set(Calendar.DAY_OF_MONTH, lastDay - 1); //上月的第一天减去1就是当月的最后一天
            datevalue2 = simpleDateFormat.format(cal.getTime());
//            calendar.add(com.ibm.icu.util.Calendar.MONTH, 0);
//            calendar.set(com.ibm.icu.util.Calendar.DAY_OF_MONTH, calendar.getActualMaximum(com.ibm.icu.util.Calendar.DAY_OF_MONTH));
//            datevalue2 = simpleDateFormat.format(calendar.getTime());
            calendar.add(com.ibm.icu.util.Calendar.MONTH, -1);
            calendar.set(com.ibm.icu.util.Calendar.DAY_OF_MONTH, calendar.getActualMaximum(com.ibm.icu.util.Calendar.DAY_OF_MONTH));
            StringBuffer buffer = new StringBuffer(simpleDateFormat.format(calendar.getTime()));
            dateString = Integer.parseInt(datevalue1.substring(0, 4)) - 1 + datevalue1.substring(4);
            dateStringTQ = Integer.parseInt(datevalue2.substring(0, 4)) - 1 + datevalue2.substring(4);
        } else {
            dateString = Integer.parseInt(datevalue1.substring(0, 4)) - 1 + datevalue1.substring(4);
            dateStringTQ = Integer.parseInt(datevalue2.substring(0, 4)) - 1 + datevalue2.substring(4);
        }

总结

以上就是后端获取前端方法进行计算,也可以不用传参在后端直接获取当日时间,这个就根据业务需求来做了,然后就是api的使用我也是第一次用到这个,查了api手册之后才明白这个东西的使用,具体的可以看上面图片中展示的介绍

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值