1、偷懒直接贴代码,方便下次使用: /** * .Description://根据字符日期返回星期几 * .Author:麦克劳林 * ....dateFm = new SimpleDateFormat("EEEE"); week = dateFm.format(date); week=week.replaceAll("星期
例如,2024 年的第一周可能会从 2023 年的最后几天开始,因此 YYYY 和 yyyy 可能在年初和年末产生不同的结果。...例子 1:新年前夕假设当前日期是 2023 年 12 月 31 日,星期一。根据 ISO 8601 标准,这一天属于 2024 年的第一周。...因此:使用 yyyy 格式化:2023使用 YYYY 格式化:2024import java.time.LocalDate;import java.time.format.DateTimeFormatter...2024 年 1 月 1 日,星期二。...这一天属于 2024 年的第一周。
前言 今天又遇到很坑的问题了,因为外国友人每一周的起始日期是周日,跟我们的不一样,我们每一周的起始日期是星期一,这样导致我要用mysql统计一周的数据的时候,对于我们来说,查询的记录包括:上周日的记录...+本周的数据到星期六 这样的数据,这就不符合我们的要求,把上周日的数据也统计进来了。...所以也是找了好久的资料,才终于解决 一、问题发现: 默认我一开始写的测试查询本周上周数据的语句是这样的: #查询本周 select A.sushenum,cast(A.dfdata as DECIMAL...大家可以很明显的看到2018年12月2日的记录也查出来了,12月2日是星期日。为了让大家更直观的看,我把12月的月份截出来 ? 所以这样查询出来的记录,对于我们来说是有问题的。接下来教大家解决办法。...从上面YEARWEEK()函数API可以知道,还有mode这个字段是可以自己设置一周是从星期几开始的,不写的话默认是星期日为一周的开始日期,这里为了适用我们的系统,将星期一设置为一周的开始日期,我们就给
从 JDK 1.1 开始,应该使用 Calendar 类实现日期和时间字段之间转换,使用 DateFormat 类来格式化和解析日期字符串。Date 中的相应方法已废弃。...其中传入的主要参数为: HOUR_OF_DAY 一天中某个小时; DAY_OF_WEEK 一个星期中的某天; DAY_OF_MONTH 一个月中的某天; DAY_OF_YEAR 当前年中的天数;...WEEK_OF_MONTH 当前月中的星期数; WEEK_OF_YEAR 当前年中的星期数; 二、使用 1、获取当前时间的毫秒值 System.currentTimeMillis() long timeNow...中格式化字符的含义 5、YYYY与yyyy区别 日期格式化时,yyyy表示当天所在的年,而大写的YYYY代表是week in which year(JDK7之后引入的概念),意思是当天所在的周属于的年份,一周从周日开始...(本周跨越了2017年和2018年) 三、JDK1.8中Date/Time API使用 Java 8提供了一个全新的API,用以替换java.util.Date和java.util.Calendar。
在这个方法里,需要的日期你填写什么就是什么,不想之前的API中月份必须从0开始 /** * 3....: " + oneToday); // 今天的日期是: 2020-02-06 // 一周后的日期是: 2020-02-13 可以看到一周后的日期是什么,也可以用这个方法来增加一个月,一年,一小时,一分等等...如何在java中使用自定义的格式器来解析日期 */ String goodFriday = "02 06 2020"; try { DateTimeFormatter formatter =....*; import java.time.format.DateTimeFormatter; import java.util.Date; public class DateUtil { private...(Java8) ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/ enum FormatEnum { /** * 返回 DateTimeFormatter "
这是由于混淆SimpleDateFormat的各种格式化模式: 小写y是年 大写Y是week year,即所在的周属于哪一年 一年第一周的判断方式 从getFirstDayOfWeek()开始,完整的7...该计算方式和区域相关,对zh_CN区域,2020年第一周条件:从周日开始的完整7天,2020年包含1天即 可。...若把区域改为法国 Locale.setDefault(Locale.FRANCE); 则week yeay就还是2020年,因为一周的第一天从周一开始算,2020年的第一周是2019年12月28日周一开始...对于SimpleDateFormat的这些坑,使用Java 8中的DateTimeFormatter即可避免。...20201111' could not be parsed at index 0 at java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java
JAVA获取30天或某段范围日期的方法,在项目使用中比较频繁。...8中的LocalDate类和DateTimeFormatter类来处理日期格式化。...DayOfWeek getDayOfWeek 得到当前日期是星期几,作为DayOf类的一个实例返回,调用getValue来得到1~7之间的一个数,表示这是星期几,1表示星期一,7表示星期日 LocalDate...System.out.println("当前周的结束"+getStartOrEndDayOfWeek("2023-01-01",0,false)); System.out.println("当前周前一周的开始..."+getStartOrEndDayOfWeek("2023-01-01",-1,true)); System.out.println("当前周前一周的结束"+getStartOrEndDayOfWeek
jdk8提供了新的时间API,在java.time包里的类是不可变且线程安全的,它和Joda是同一个作者实现的,因此借鉴了Joda很多特点,如果你用习惯Joda,可以很方便地切换到java.time类的使用...关注公众号,一起交流,微信搜一搜: 潜行前行 java.time类的简单介绍 Date和time做下区分,Date(日期)的单位是年月日。...dateTimeFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); dateTimeFormatter = dateTimeFormatter.withZone...(1, 7)) //以每月的第一天为星期一,然后计算当天是一周的第几天 ALIGNED_DAY_OF_WEEK_IN_YEAR("AlignedDayOfWeekInYear", DAYS...previous(DayOfWeek dayOfWeek) //如果当前星期数和dayOfWeek不一样,则设置时间为上周的星期几-dayOfWeek public static TemporalAdjuster
对日期的计算方式繁琐,而且容易出错,因为月份是从0开始的,从Calendar中获取的月份需要加一才能表示当前月份。...localDate.getDayOfMonth(); // 月份中的第几天:4 DayOfWeek dayOfWeek = localDate.getDayOfWeek(); // 一周的第几天...interface TemporalAdjuster { Temporal adjustInto(Temporal temporal); } 比如给定一个日期,计算该日期的下一个工作日(不包括星期六和星期天...类用于处理日期格式化操作,它被包含在java.time.format包中,Java 8的日期类有一个format()方法用于将日期格式化为字符串,该方法接收一个DateTimeFormatter类型参数...(DateTimeFormatter.ofPattern("今天是:YYYY年 MMMM DD日 E", Locale.CHINESE)); // 今天是:2017年 一月 05日 星期四 同样,日期类也支持将一个字符串解析成一个日期对象
; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class...周一为一周的第一天,周日为最后一天。 2019-12-31 是周二,但这周是跨年周(2019 年的最后一周有 6 天在 2019 年,1 天在 2020 年)。...按 ISO 规则,这一周 归属下一年(2020),因此 YYYY 会输出 2020。...4.1 ISO 周年示例 日期 星期 周编号 周年(YYYY) 公历年(yyyy) 2019-12-29 日 52 2019 2019 2019-12-30 一 01 2020 2019 2019-12...六、Java 8+ 推荐写法 使用 java.time API,显式区分公历年和周年制: import java.time.*; import java.time.format.DateTimeFormatter
JAVA8实战 - 日期API 前言 这一节我们来讲讲JAVA8的日期类,源代码的作者其实就是Joda-Time,所以可以看到很多代码的API和Joda类比较像。...= parse1.getDayOfYear(); System.out.println("getDayOfYear => " + dayOfYear); // 获取那一周...next / previous 返回后一个/前一个给定的星期几 nextOrSame / previousOrSame 返回后一个/前一个给定的星期几,如果这个值满足条件,直接返回 DateTimeFormatter...获取LocalDateTime StackFlow地址:解析LocalDateTime(Java 8)时,无法从TemporalAccessor获取LocalDateTime ❞ DateTimeParseException...一些小坑 参考了下面的异常日志,根本的原因是DateTimeFormatter格式化没有HH选项,这也是比较坑的地方 java.time.format.DateTimeParseException:
GMT 以来此 Date 对象表示的毫秒数 toString(): 把此 Date 对象转换为以下形式的 String: dow mon dd hh:mm:ss zzz yyyy 其中: dow 是一周中的某一天...指定的格式创建一个对象 格式化: public String format(Date date):方法格式化时间对象date 解析: public Date parse(String source):从给定字符串的开始解析文本...calendar.get(Calendar.DAY_OF_MONTH)); } 二、JDK8:新的日期时间API 1、为什么会有新的时间API 可变性:像日期和时间这样的类应该是不可变的 偏移性:Date中的年份是从1900...plusHours() 向当前对象添加几天、几周、几个月、几年、几小时 minusMonths() / minusWeeks()/minusDays()/minusYears()/minusHours() 从当前对象减去几月...Timezone.getTimeZone(id) timeZone.toZoneId() java.time.format.DateTimeFormatter与java.text.DateFormat
老的日期API的核心类 缺点 Date 月从0开始,年最小从1900年开始,没有时区的概念 Calendar 月从0开始 DateFormat 线程不安全 其它 同时存在Date和Calendar难以选择...获取类方法 说明 getYear() 获取年 getMonthValue() 获取月份数值 getMonth() 得到月份对象 getDayOfMonth 得到月份的天数值 getDayOfWeek 得到一周的星期数...java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAccessor; import java.time.temporal.TemporalField...; import java.time.format.DateTimeFormatter; import java.time.format.DateTimeFormatterBuilder; import...LocalDate.now().with(TemporalAdjusters.firstInMonth(DayOfWeek.FRIDAY)); System.out.println("本月的第一个星期五
相信一开始接触java的小伙伴一定被Calendar的强大征服过,但是用久了慢慢地我们会发现其实这个类并没有想象中那么强大,首先一个问题就是它并不支持时区,其次它也不是线程安全的。...比较头疼的一个事情就是java8没有针对Instant提供一个可供自定义的格式化类,所以这边我的解决方法是转换成LocalDateTime,再使用DateTimeFormatter来完成格式化。...LocalDate一周是从周一开始计数对应的value值为1,周日结束对应的value值为7。...而Calendar一周是从周日开始计数对应的value值为1,周六结束对应的value为7,相比较下个人觉得LocalDate更加合理和好用一些。...之前我们讲过java.text.SimpleDateFormat可以自定义格式化时间格式,但是他并不是线程安全的类,所以java8开始配合LocalDateTime提供了java.time.format.DateTimeFormatter
时间线 时间单位是以秒为单位,是从地球的自转中推导出来的。地球自转一周需要24个小时,即24 x 60 x 60 = 86400秒。但是地球有轻微的颤动,所以需要更加精确的定义。...,要么从给定的年月日构建。...这与java.util.Calendar有所差异,在后者,星期六的值为1,而星期天的值为7....(weekday) 从给定的日期开始的下一个或上一个给定的星期日期 dayOfWeekInMonth(n, weekday) 月份中的n个weekday lastInMonth(weekday) 月份中的最后一个...还有一类java.sql包中的日期和时间类。 可以传递一个DateTimeFormatter给使用java.text.Format的遗留代码。
因为YYYY是基于周来计算年的,它指向当天所在周属于的年份,一周从周日开始算起,周六结束,只要本周跨年,那么这一周就算下一年的了。正确姿势是使用yyyy格式。 ?...: Text 'Wed Mar 18 10:00:00 2020' could not be parsed at index 0 at java.time.format.DateTimeFormatter.parseResolved0...(DateTimeFormatter.java:1949) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:1851...(SynchronizedTest.java:19) 解析: DateTimeFormatter 这个类默认进行本地化设置,如果默认是中文,解析英文字符串就会报异常。...1986年4月,中国中央有关部门发出“在全国范围内实行夏时制的通知”,具体作法是:每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时。(1992年起,夏令时暂停实行。)
因为YYYY是基于周来计算年的,它指向当天所在周属于的年份,一周从周日开始算起,周六结束,只要本周跨年,那么这一周就算下一年的了。正确姿势是使用yyyy格式。 ...: Text 'Wed Mar 18 10:00:00 2020' could not be parsed at index 0 at java.time.format.DateTimeFormatter.parseResolved0...(DateTimeFormatter.java:1949) at java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java...(SynchronizedTest.java:19) 解析: DateTimeFormatter 这个类默认进行本地化设置,如果默认是中文,解析英文字符串就会报异常。...1986年4月,中国中央有关部门发出“在全国范围内实行夏时制的通知”,具体作法是:每年从四月中旬第一个星期日的凌晨2时整(北京时间),将时钟拨快一小时。(1992年起,夏令时暂停实行。)
)); //LOCAL_DATE_TIME.format(DateTimeFormatter.ISO_INSTANT);//java.time.temporal.UnsupportedTemporalTypeException...Assert.assertEquals("2019年7月7日星期日 日本标准时间 下午8:18:18", DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL...).format(OFFSET_DATE_TIME)); Assert.assertEquals("2019年7月7日星期日 日本标准时间 下午8:18:18", DateTimeFormatter.ofLocalizedDateTime..."2019年7月7日星期日", DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).format(ZONED_DATE_TIME)); Assert.assertEquals...("2019年7月7日星期日", DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).format(OFFSET_DATE_TIME)); Assert.assertEquals
.*; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAdjusters; import java.util.Date...dateTimeFormatter = DateTimeFormatter.ofPattern(format); return localDateTime.format(dateTimeFormatter...dateTimeFormatter = DateTimeFormatter.ofPattern(format); return localDate.format(dateTimeFormatter...; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class...*/ private static final String weekNames[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六
需要的包: import java.time.DayOfWeek; import java.time.LocalDate; import java.time.LocalDateTime; import...java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit...; import java.time.LocalTime; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit...星期二"; /** * 星期三; */ public static final String WEDNESDAY = "星期三"; /** *..., dateTimeFormatter); } /** * 日期字符串转换为日期(java.time.LocalDate) * * @param localDateStr