前言
SimpleDateFormat使用介绍
提示:以下是本篇文章正文内容,下面案例可供参考
一、SimpleDateFormat是什么?
如果你对java源码比较了解。你会发现java对文字,数字的格式化,是有一个公共的父类的Format。 NumberFormat和DecimalFormat都是它的子类关于数字的。 DateFormat和SimpleDateFormat也是它的子类关于文字的。
要特别注意的是 NumberFormat和DecimalFormat是线程不安全的。 这意味你如果同时有多个线程操作一个format实例对象,会出现意想不到的结果。
解决方法有两个:
- 为每个线程都创建一个 format实例,通过ThreadLocal 来给每个线程都产生一个本地实例
- 进行外部同步,这个就可以通过关键词 synchronized来进行同步。
- 第一种方法 **比较占用内存多,但是速度快,效率高。并发。**第二种方法 **占用内存少,效率低,耗费时间长,毕竟要排队嘛,串行。**具体取舍,看项目的情况
简单通俗来说:就是用来操作一些数字文字的格式的
详细的可以参考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手册之后才明白这个东西的使用,具体的可以看上面图片中展示的介绍