首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

将小写的短工作日解析为Java8的时间DayOfWeek

在Java 8中,DayOfWeek 是一个枚举类型,它表示一周中的某一天。Java 8引入了新的日期和时间API,位于 java.time 包中,这个API提供了处理日期和时间的强大工具。

基础概念

DayOfWeek 枚举包含以下七个值,分别代表一周中的每一天:

  • MONDAY
  • TUESDAY
  • WEDNESDAY
  • THURSDAY
  • FRIDAY
  • SATURDAY
  • SUNDAY

相关优势

  1. 不可变性DayOfWeek 是一个不可变的对象,这意味着一旦创建了一个 DayOfWeek 实例,它的值就不能被改变。
  2. 线程安全:由于不可变性,DayOfWeek 实例在多线程环境中是安全的。
  3. 丰富的API:提供了许多有用的方法来操作和查询日期,如获取某天的前一天或后一天。

类型与应用场景

DayOfWeek 主要用于表示和处理与星期相关的逻辑,例如日程安排、工作日计算、节假日安排等。

示例代码

以下是一个将小写的短工作日字符串解析为 DayOfWeek 的Java代码示例:

代码语言:txt
复制
import java.time.DayOfWeek;
import java.util.Locale;

public class DayOfWeekExample {
    public static void main(String[] args) {
        String shortDay = "mon"; // 假设这是输入的小写短工作日字符串

        // 将小写的短工作日字符串转换为DayOfWeek枚举
        DayOfWeek dayOfWeek = DayOfWeek.valueOf(shortDay.toUpperCase(Locale.ENGLISH));

        // 输出结果
        System.out.println("The day of the week is: " + dayOfWeek);
    }
}

可能遇到的问题及解决方法

问题:如果输入的小写短工作日字符串不是有效的 DayOfWeek 枚举值,例如 "abc",那么 DayOfWeek.valueOf 方法会抛出一个 IllegalArgumentException

解决方法:在使用 valueOf 方法之前,应该先验证输入字符串的有效性。可以使用 DayOfWeek.values() 方法获取所有可能的枚举值,并检查输入字符串是否匹配其中任何一个。

代码语言:txt
复制
import java.time.DayOfWeek;
import java.util.Locale;

public class DayOfWeekExample {
    public static void main(String[] args) {
        String shortDay = "abc"; // 假设这是输入的小写短工作日字符串

        // 验证输入字符串是否为有效的DayOfWeek枚举值
        DayOfWeek dayOfWeek = null;
        try {
            dayOfWeek = DayOfWeek.valueOf(shortDay.toUpperCase(Locale.ENGLISH));
        } catch (IllegalArgumentException e) {
            System.out.println("Invalid day of the week: " + shortDay);
        }

        // 如果dayOfWeek不为null,则输出结果
        if (dayOfWeek != null) {
            System.out.println("The day of the week is: " + dayOfWeek);
        }
    }
}

在这个示例中,我们使用了 try-catch 块来捕获可能抛出的 IllegalArgumentException 异常,并给出了相应的错误信息。这样可以确保程序在遇到无效输入时不会崩溃,并且能够给出用户友好的提示。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

JAVA8实战 - 日期API

JAVA8实战 - 日期API 前言 这一节我们来讲讲JAVA8的日期类,源代码的作者其实就是Joda-Time,所以可以看到很多代码的API和Joda类比较像。...日期类一直是一个比较难用的东西,但是JAVA8给日期类提供了一套新的API让日期类更加好用。 本文代码较多,建议亲自运行代码理解。...Instant等关于细粒度的时间操作介绍 TemporalAdjusters 用于更加复杂的日期计算,比如计算下一个工作日的时候这个类提供了一些实现 DateTimeFormatter 格式化器,非常的灵活多变...如UTC时间下午2点30分5秒表示为14:30:05Z或143005Z,当时的北京时间表示为22:30:05+08:00或223005+0800,也可以简化成223005+08。...parseDefaulting(ChronoField.SECOND_OF_MINUTE, 0) .toFormatter(Locale.CHINA); } 获取指定时间的上一个工作日和下一个工作日

1.6K30
  • Swift Codable 将任意类型解析为想要的类型

    var age: Int } 这个时候我们正常解析则没有任何问题,但是当出现服务器将 age中的18采用String方式:"18" 返回时,则无法解析,这是非常难遇见的情况(请问为啥我遇到了?...在使用 OC 的时候,我们常用的方法将其解析为 NSString 类型,使用的时候再进行转换,可是当使用 Swift 的 Codabel 时我们不能直接做到这样。...第二种方法同时也不会采用重写模型自身的解析过程来实现,那样子不具备通用性,太麻烦,每次遇到都需要来一遍。 参照第一种方法,我们先写一个将任意类型转换成 String?...都转换为 String 然后保证正常解析 // 当前支持 Double Int String // 其他类型会解析成 nil // /// 将 String Int Double 解析为 String...} 同理我们可以写一个 ZYInt, 来将任意类型转换为 Int 如果确实无法转换,我们可以控制其为nil 或者直接等于 0,这样我们就可以保证不管怎么样,我们的解析不会失败。

    2K40

    【Java8新特性】关于Java8中的日期时间API,你需要掌握这些!!

    自开源半年多以来,已成功为十几家中小型企业提供了精准定时调度方案,经受住了生产环境的考验。...写在前面 Java8之前的日期和时间API,存在一些问题,比如:线程安全的问题,跨年的问题等等。这些问题都在Hava8中的日期和时间API中得到了解决,而且Java8中的日期和时间API更加强大。...立志成为架构师的你,必须掌握Java8中的日期和时间API。...它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。 注:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法 示例代码如下所示。...Java8 中加入了对时区的支持,带时区的时间为分别为:ZonedDate、 ZonedTime、 ZonedDateTime。

    59210

    详解Java8的日期和时间API

    详解Java8的日期和时间API 在JDK1.0的时候,Java引入了java.util.Date来处理日期和时间;在JDK1.1的时候又引入了功能更强大的java.util.Calendar,但是Calendar...format包中定义了时区名称、日期解析和格式化的各种枚举,以及最为重要的格式化类DateTimeFormatter。需要注意的是,format包类中的类都是final的,都提供了线程安全的访问。...Java8中的日期时间类都是实现了temporal包中的时间单位(Temporal)、时间调节器(TemporalAdjuster)和各种属性的接口,所以在后面的日期的操作方法中都是以最基本的时间单位和各种属性为参数的...首先需要再次明确的一点是,Java8中提供的日期时间对象都是不可变的,因而也是线程安全的。所以每次对日期时间对象进行操作的时候都是返回新的日期时间对象。...月 2019-12-22 LocalDate date6 = date.plus(5, ChronoUnit.DAYS); // 增加5天 2020-02-27 比较复杂的日期操作,比如将时间调到下一个工作日

    2.1K11

    Java 基础-LocalDate相关

    Java8已经出来好久了,然后我们平时工作中也遇到了好多的关于时间转换的问题,基本上就是需要的时间看一看源码,然后拿来直接用,其实真正理解的并不多。...那么在写具体的LocalDate前,我们先来看下为什么要在Java8中搞一套新的API呢,因为旧的Date类非常的难用,比如,其中的几个构造方法都被标注为@Deprecated,这里我总结了一些Date...只使用数字为基本格式。使用短横线"-"间隔开年、月、日为扩展格式。 非ISO公历:泰国佛教日历,Hijrah日历,Minguo日历 ?...该软件包扩展了基础软件包,为更强大的用例提供了额外的功能,包括 日期时间单位,例如年,月,日和小时 日期时间字段,例如月份,星期几或小时 日期时间调整功能 周的不同定义 比如像Date Time Package...Instant这是一个时间线上的瞬时点时间,可以理解为格林威治时间 ? 我现在的时间是2018年10月9日21点02,输出是 ?

    1.4K10

    大厂都是怎么用Java8代替SimpleDateFormat?

    线程安全问题 使用一个100线程的线程池,循环20次把时间格式化任务提交到线程池处理,每个任务中又循环10次解析2020-01-01 11:12:13这样一个时间表示: 运行程序后大量报错,即使没有报错的输出结果也不正常...SimpleDateFormat 用于定义解析和格式化日期时间的模式。看起来是一次性工作,应该复用,但它的解析和格式化操作都非线程安全。 分析源码 ?...2 Java 8中的DateTimeFormatter 2.1 格式化字符串 首先,使用DateTimeFormatterBuilder定义格式化字符串,无需死记大写Y还是小写y,大写M还是小写m:...2.2 线程安全 可定义为static使用 2.3 待解析字符串和格式不匹配时就报错 ?...3.3 使用lambda自定义的时间调整 为当前时间增加100天以内的随机天数: ? 判断日期是否符合某个条件 ? query查询是否匹配条件 ?

    1.8K10

    06-Java8新特性 新时间日期API

    ,时间,日期和时间,他们提供了简单的日期或时间,并不包含当前的额时间信息.也不包含与时区相关的信息 注:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法 LocalDateTime...TemporalAdjuster:时间矫正器,有时我们可能需要获取列如:将日期调整到"下个周期"等操作 TemporalAdjusters:该类通过静态方法提供了大量的常用TemporalAdjuster...with = now.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)); System.out.println("下周日为:"+with);...l; DayOfWeek dayOfWeek = work.getDayOfWeek(); switch (dayOfWeek) { case...Java8中假如了对时区的支持,带时区的时间分别为: ZonedDate,ZonedTime,ZonedDateTime 其中每个时区都对应着ID,地区ID都为 "{区域}/{城市}"的格式 例如:Asia

    66610

    为什么建议使用你 LocalDateTime ,而不是 Date?

    来源:juejin.im/post/5d7787625188252388753eae 为什么需要LocalDate、LocalTime、LocalDateTime Come On 一起使用java8全新的日期和时间...、LocalTime、LocalDateTime【java8新提供的类】 java8新的时间API的使用方式,包括创建、格式化、解析、计算、修改 为什么需要LocalDate、LocalTime、LocalDateTime...time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。...Easy,但都被弃用了啊 Come On 一起使用java8全新的日期和时间API LocalDate 只会获取年月日 创建LocalDate //获取当前年月日 LocalDate localDate...,可以通过DateTimeFormatter的ofPattern方法创建自定义格式化方式 解析时间 LocalDate localDate1 = LocalDate.parse("20190910",

    1.1K20

    为什么建议使用你 LocalDateTime ,而不是 Date?

    来源:juejin.im/post/5d7787625188252388753eae 为什么需要LocalDate、LocalTime、LocalDateTime Come On 一起使用java8全新的日期和时间...API 小结 通过阅读本篇文章你将了解到: 为什么需要LocalDate、LocalTime、LocalDateTime【java8新提供的类】 java8新的时间API的使用方式,包括创建、格式化、...time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。...Easy,但都被弃用了啊 Come On 一起使用java8全新的日期和时间API LocalDate 只会获取年月日 创建LocalDate //获取当前年月日 LocalDate localDate...,可以通过DateTimeFormatter的ofPattern方法创建自定义格式化方式 解析时间 LocalDate localDate1 = LocalDate.parse("20190910",

    1.1K10

    为什么建议你使用LocalDateTime而不是Date?

    、LocalDateTime【java8新提供的类】 java8新的时间API的使用方式,包括创建、格式化、解析、计算、修改 为什么需要LocalDate、LocalTime、LocalDateTime...time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。...,获取年月日很Easy,但都被弃用了啊 Come On 一起使用java8全新的日期和时间API LocalDate 只会获取年月日 创建LocalDate //获取当前年月日 LocalDate localDate...,可以通过DateTimeFormatter的ofPattern方法创建自定义格式化方式 解析时间 LocalDate localDate1 = LocalDate.parse("20190910",...SpringBoot中应用LocalDateTime 将LocalDateTime字段以时间戳的方式返回给前端 添加日期转化类 public class LocalDateTimeConverter extends

    2.1K10

    为什么建议使用你LocalDateTime,而不是Date?

    通过阅读本篇文章你将了解到: 为什么需要LocalDate、LocalTime、LocalDateTime【java8新提供的类】 java8新的时间API的使用方式,包括创建、格式化、解析、计算、修改...time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。...Come On 一起使用java8全新的日期和时间API LocalDate 只会获取年月日 创建LocalDate //获取当前年月日 LocalDate localDate = LocalDate.now...比如有些时候想知道这个月的最后一天是几号、下个周末是几号,通过提供的时间和日期API可以很快得到答案。...解析时间 LocalDate localDate1 = LocalDate.parse("20190910", DateTimeFormatter.BASIC_ISO_DATE); LocalDate

    1.4K10

    为什么建议使用你 LocalDateTime ,而不是 Date?

    、LocalDateTime【java8新提供的类】 java8新的时间API的使用方式,包括创建、格式化、解析、计算、修改 为什么需要LocalDate、LocalTime、LocalDateTime...time值另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。...较好的方法 Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗,获取年月日很...Easy,但都被弃用了啊 Come On 一起使用java8全新的日期和时间API LocalDate 只会获取年月日 创建LocalDate //获取当前年月日 LocalDate localDate...,可以通过DateTimeFormatter的ofPattern方法创建自定义格式化方式 解析时间 LocalDate localDate1 = LocalDate.parse("20190910",

    1.6K20

    Java8中时间API

    java.time.format – 格式化和解析时间和日期 java.time.temporal – 包括底层框架和扩展特性 java.time.zone – 包含时区支持的类 1.本地日期时间:LocalDate...、年份天数、月份、年份修改为指定的值并返回新的对象 with(TemporalAdjuster t) 将当前日期时间设置为校对器指定的日期时间 plusDays(), plusWeeks(), plusMonths...,返回一个字符串 parse(Charsequence text) 将指定格式的字符串解析为日期、时间 2.瞬时:Instant Instant:时间线上的一个瞬时点。...format(TemporalAccessor t) 格式化一个日期、时间,返回字符串 parse(CharSequence text) 将指定格式的字符序列解析为一个日期、时间 import java.time.LocalDateTime...4.4 TemporalAdjuster TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下一个工作日”等操作。

    89560

    shell 自动导出数据库,将导出的格式为 : 数据库名+时间.sql

    /bin/bash # databases out save # developer : eisc.cn # 开发: 小绿叶技术博客; 功能:shell 自动导出数据库,将导出的格式为 : 数据库名+时间...,因此赋值为字符串 # 因为新版的mysqldump默认启用了一个新标志,通过- -column-statistics=0来禁用他 else...最后再次将状态更新为正常 1 # 注意: shell if 判断的时候需要在变量和值加双引号,否则异常 done echo "数据库导出保存目录: $dir 将目录...read -p "请输入:" in_buff buff=( abcd $in_buff); echo "你输入的信息为: ${buff[*]}"; case ${buff[1]} in...列出该目录的文件,如下:" ; ls $DestDir read -p "是否将文件放置在该目录?y/n:" fzfile if [ "$fzfile" !

    2.6K40

    什么在代码中要求我们使用LocalDateTime而不是Date?

    通过阅读本篇文章你将了解到: 为什么需要LocalDate、LocalTime、LocalDateTime【java8新提供的类】; java8新的时间API的使用方式,包括创建、格式化、解析、计算、...time值 另外的一个线程马上把设置的time值给修改了导致返回的格式化时间可能是错误的。...=> 较好的方法 1.Date对时间处理比较麻烦,比如想获取某年、某月、某星期,以及n天以后的时间,如果用Date来处理的话真是太难了,你可能会说Date类不是有getYear、getMonth这些方法吗...,获取年月日很Easy,但都被弃用了啊 # Come On 一起使用java8全新的日期和时间API LocalDate 只会获取年月日 创建LocalDate //获取当前年月日LocalDate...,可以通过DateTimeFormatter的ofPattern方法创建自定义格式化方式 解析时间 LocalDate localDate1 = LocalDate.parse("20190910",

    1.1K20
    领券