1、SimpleDateFormat函数语法: G 年代标志符 y 年 M 月 d 日 h 时 在上午或下午 (1~12) H 时 在一天中 (0~23) m 分 s 秒 S 毫秒 E 星期 D 一年中的第几天 F 一月中第几个星期几 w 一年中第几个星期 W 一月中第几个星期 a 上午 / 下午 标记符 k 时 在一天中 (1~24) K 时 在上午或下午 (0~11) z 时区
参考博客:https://blog.csdn.net/sinat_32238399/article/details/80512452
可以看到,减去5个月得到的日期是没有问题的,但是减去超过一年时就有问题了,再试试减20个月
今天我要给大家分享一些自己日常学习到的一些知识点,并以文字的形式跟大家一起交流,互相学习,一个人虽可以走的更快,但一群人可以走的更远。
package com.pts.peoplehui.utils; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.Locale; public class DateUtils { public static String getTodayDateTime() { SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”, Locale.getDefault()); return format.format(new Date()); } /** * 掉此方法输入所要转换的时间输入例如(”2014年06月14日16时09分00秒”)返回时间戳 * * @param time * @return */ public String data(String time) { SimpleDateFormat sdr = new SimpleDateFormat(“yyyy年MM月dd日HH时mm分ss秒”, Locale.CHINA); Date date; String times = null; try { date = sdr.parse(time); long l = date.getTime(); String stf = String.valueOf(l); times = stf.substring(0, 10); } catch (Exception e) { e.printStackTrace(); } return times; } public static String getTodayDateTimes() { SimpleDateFormat format = new SimpleDateFormat(“MM月dd日”, Locale.getDefault()); return format.format(new Date()); } /** * 获取当前时间 * * @return */ public static String getCurrentTime_Today() { SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd-HH-mm-ss”); return sdf.format(new java.util.Date()); } /** * 调此方法输入所要转换的时间输入例如(”2014-06-14-16-09-00″)返回时间戳 * * @param time * @return */ public static String dataOne(String time) { SimpleDateFormat sdr = new SimpleDateFormat(“yyyy-MM-dd-HH-mm-ss”, Locale.CHINA); Date date; String times = null; try { date = sdr.parse(time); long l = date.getTime(); String stf = String.valueOf(l); times = stf.substring(0, 10); } catch (Exception e) { e.printStackTrace();
想必大家对SimpleDateFormat并不陌生。SimpleDateFormat 是 Java 中一个非常常用的类,该类用来对日期字符串进行解析和格式化输出,但如果使用不小心会导致非常微妙和难以调试的问题,因为 DateFormat 和 SimpleDateFormat 类不都是线程安全的,在多线程环境下调用 format() 和 parse() 方法应该使用同步代码来避免问题。下面我们通过一个具体的场景来一步步的深入学习和理解SimpleDateFormat类。
我们设置了10小时,但运行结果是22点,而不是10点。因为Calendar.HOUR默认是按12小时制处理的,需要使用Calendar.HOUROFDAY,因为它才是按24小时处理的。
日期和时间在软件开发中经常被用到,无论是用于记录事件、计算时间间隔还是格式化日期以供用户友好的展示。Java 提供了强大的日期和时间处理工具,其中 SimpleDateFormat 类是一个重要的工具,用于格式化日期和时间,同时也支持解析日期和时间。本篇博客将深入探讨 SimpleDateFormat 类,帮助你了解如何使用它来处理日期和时间。
java常用工具类:时间戳与时间相互转换,需要的拿走! package com.lcry.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 时间戳与时间相互转换工具类 * Created on 2018/12/24. * * @author lcry */ public class DateAndStampUtil { /*
SimpleDateFormat is a concrete class for formatting and parsing dates in a locale-sensitive manner. It allows for formatting (date → text), parsing (text → date), and normalization.
本文讲解了 Java 中常用类 SimpleDateFormat 的语法、使用说明和应用场景,并给出了样例代码。
import java.text.DecimalFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * 功能更强大的格式化工具类 */ public class FormatUtils { private static SimpleDateFormat second = new SimpleDateFormat
众所周知,Java中的日期类是Date,然后日期默认的输出样式很奇怪哦,是这样子的:
日常开发中,我们经常需要使用时间相关类,说到时间相关类,想必大家对SimpleDateFormat并不陌生。主要是用它进行时间的格式化输出和解析,挺方便快捷的,但是SimpleDateFormat并不是一个线程安全的类。在多线程情况下,会出现异常,想必有经验的小伙伴也遇到过。下面我们就来分析分析SimpleDateFormat为什么不安全?是怎么引发的?以及多线程下有那些SimpleDateFormat的解决方案?
目录 获取不同的SimpleDateFormat 将2022-01-01格式或者20220101的日期转为20220101 获取不同的SimpleDateFormat 根据传入的不同格式的时间,返回不同格式的SimpleDateFormat /** * 获取不同的SimpleDateFormat * @param dateStr 待判断的字符串 * @return */ public static DateFormat DateFormatInfo(Strin
1. Date SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式 String date = simpleDateFormat.format(new Date());// new Date()为获取当前系统时间,也可使用当前时间戳 System.out.println(date); //2017-10-30 17:00:42 2.Ca
SimpleDateFormat是Java提供的一个格式化和解析日期的工具类,在日常开发中经常会用到,但是由于它是线程不安全的,所以多线程共用一个SimpleDateFormat实例对日期进行解析或者格式化会导致程序出错。
JDK文档中已经明确表明了「SimpleDateFormat不应该用在多线程场景」中:
博主在做一个列表的时候从MongoDB中查出来的数据包含有时间格式,在MongoDB数据库中的存放形式为2017-10-24 05:18:54.000Z,而对于使用Java查询是String接受的值为Tue Oct 24 13:18:54 CST 2017。
每个线程需要一个独享的对象(通常是工具类,典型需要使用的类有SimpleDateFormat和Random),这个对象的特点通常是工具类,这个工具类由于它本身不是线程安全的,所以有多个线程共享同一个静态工具类的话,会有很大风险的,所以需要用到ThreadLocal来帮我们每个线程都创建一个独享的对象,而线程和线程之间呢拥有的工具类是不同的示例,所以之间并不会影响。
在阿里Java开发规约中,有强制性的提到SimpleDateFormat 是线程不安全的类 ,在使用的时候应当注意线程安全问题,如下:
结果示意图: A:DateFormat类的概述 * DateFormat 是日期/时间格式化子类的抽象类,它以与语言无关的方式格式化并解析日期或时间。是抽象类,所以使用其子类SimpleDat
当多个线程使用同一个时间处理对象进行对日期的格式化的时候,会出现java.lang.NumberFormatException: multiple points。主要原因是由于SimpleDateFormat是线程不安全的,当线程共享的时候,会引发这个异常。
【强制】SimpleDateFormat 是线程不安全的类,一般不要定义为 static 变量,如果定义为 static,必须加锁,或者使用 DateUtils 工具类。
首先问大家一个问题:你使用的SimpleDateFormat类还安全吗?我们一起带着这个问题来看本文。
线程不安全也叫非线程安全,是指多线程执行中,程序的执行结果和预期的结果不符的情况就叫做线程不安全。
1.通过Util包中的Date获取 Date date = new Date(); SimpleDateFormat dateFormat= new SimpleDateFormat("yyyy-MM-dd :hh:mm:ss"); System.out.println(dateFormat.format(date)); 2.通过Util包的Calendar 获取 Calendar calendar= Calendar.getInstance(); SimpleDateFormat dateForm
一位工作两年的小伙伴被问到这样一道面试题,说SimpleDateFormat是线程安全的吗?我们每天都在使用SimpleDateFormat这个工具类,屏幕前的你能回答出来吗?
本文节选自《Netkiller Architect 手札》 1.4.3. Date 1.4.3.1. SimpleDateFormat public static void main(String[] args) { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); //get current date time with Date() Date date = new Date(); S
import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils;
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说Java时间日期格式转换,希望能够帮助大家进步!!!
我们设置了10小时,但运行结果是22点,而不是10点。因为Calendar.HOUR默认是按12小时制处理的,需要使用Calendar.HOUR_OF_DAY,因为它才是按24小时处理的。
本专栏是自己学Java的旅途,纯手敲的代码,自己跟着黑马课程学习的,并加入一些自己的理解,对代码和笔记 进行适当修改。希望能对大家能有所帮助,同时也是请大家对我进行监督,对我写的代码进行建议,互相学习。
本文实例为大家分享了java实现时间与字符串之间转换的具体代码,供大家参考,具体内容如下
文章中,用的API是SimpleDateFormat,它是属于java.text.SimpleDateFormat,所以请记得import进
可以通过 new 一个 SimpleDateFormat 对象,通过对象调用parse方法实现
没有人见过风的模样,每当树枝摇曳,水波涟漪或浮云飘过,我们才知道风一直都在从未离开!
import java.util.Date; import java.text.SimpleDateFormat;
1、将SimpleDateFormat定义为局部变量时,每个线程都独占SimpleDateFormat目标。
最近,有小伙伴看了我写的《深入理解高并发编程(第1版)》或者在 冰河技术 公号看了《高并发之——SimpleDateFormat类的线程安全问题和解决方案》一文,对文中SimpleDateFormat类线程不安全问题的分析产生了疑惑,并留言或者私信我说明了自己对问题的理解和建议。
OK,本文的主题是java中常用的时间操作,在平时开发过程中经常会使用到这些时间操作类,但是大部分使用都是其他工具包提供的类或者就那么几个常用的方法,对其中的方法也都并没有深入学习。所以这篇博客就记录一下我对jdk8中有关常用的时间操作的学习,在此过程中会用到jdk文档。
这是一个java工具类,用于大多数需要判断日期是不是当天、本周、本月、本季度、本年,以更好的进行下一步判断, 那么如何去写代码吗?请直接看下面:
在Java的多线程编程中,我们常常会遇到某些类在多线程环境下不安全的问题,例如SimpleDateFormat。由于SimpleDateFormat不是线程安全的,直接在多线程中共享一个实例会导致各种奇怪的问题。因此,我们需要寻找一种有效的方法来使每个线程拥有一个独立的SimpleDateFormat实例。本文将深入探讨如何利用ThreadLocal实现这个目标,并分析其中的一些陷阱和解决方案。
SimpleDateFormat format = new SimpleDateFormat(“yyyy-MM-dd HH:mm:ss”); Calendar c = Calendar.getInstance(); 1.过去七天 c.setTime(new Date()); c.add(Calendar.DATE, - 7); Date d = c.getTime(); String day = format.format(d); System.out.println(“过去七天:”+day); 2
string format(Date date)按照指定的模式,把Date日期,格式化为符合模式的字符串 Date parse(String source)把符合模式的字符串,解析为Date日期
SimpleDateFormat继承了DateFormat,DateFormat内部有一个Calendar对象的引用,主要用来存储和SimpleDateFormat相关的日期信息。
public final String format(Date date):将日期格式化成日期/时间字符串
表单提交过来的所有字段都是字符串类型的,之所以vo对象中的Integer等类型能被注入是因为springmvc已经默认定义了许多属性编辑器来进行处理,但是你传过来一个2014-01-01 16:10 他就不会处理了 所以写一个自定义编辑器就能解决了
领取专属 10元无门槛券
手把手带您无忧上云