当前位置: 首页 > 知识库问答 >
问题:

如何检查用户是否在java中插入了这种格式的日期周号和今年的最后两位数字

法和硕
2023-03-14

我想检查用户是否以这种格式插入日期
例如:String date=“1420”;其中14是一年中的周数,20是2020年

我创建了这个方法,但它不起作用。正确的模式是什么?你也可以和我分享一个链接或者一些我可以看到这些模式的东西。

public static boolean checkDate (String date) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("wwuu");
    try {
        LocalDateTime dateTime = LocalDateTime.parse(date, formatter);
        System.out.println("The string is a date and time: " + dateTime);
        return true;
    } catch (DateTimeParseException dtpe) {
        System.out.println("The string is not a date and time of format \"wwuu\" : " + dtpe.getMessage());
        return false;
    }
}

我收到此消息字符串不是格式为“wwuu”的日期和时间:无法解析文本“1420”:无法从临时Accessor获取LocalDateTime:{WeekOfWeekBasedYear[WeekFields[SUNDAY,1]]=14,Year=2020},ISO类型为java。时间总体安排解析

共有2个答案

姜弘化
2023-03-14

您可以尝试使用简单的RegExdate1拆分日期字符串。拆分(“-”)并使用整数将它们解析为整数。parseInt(“dd”)整数。parseInt(“mm”)等等。然后检查日期是否小于31,月份是否小于12,依此类推。

姚正真
2023-03-14

使用“u”指定年份似乎不起作用。相反,您应该使用“Y”。根据文件,这定义了“基于周的年”(https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html ).

但是格式化程序仍然存在问题。通过指定一周和一年,解析器无法知道在解析日期时应考虑一周中的哪一天和一天中的哪一时间。可以使用DateTimeFormatterBuilder为不在要格式化的字符串中的内容指定默认值。以下是您的代码

public static boolean checkDate (String date) {
    DateTimeFormatter formatter =  new DateTimeFormatterBuilder().appendPattern("wwYY")
        .parseDefaulting(WeekFields.ISO.dayOfWeek(), DayOfWeek.MONDAY.getValue())
        .toFormatter();
    try {
      LocalDateTime dateTime = LocalDate.parse(date, formatter).atStartOfDay();
      System.out.println("The string is a date and time: " + dateTime);
      return true;
    } catch (DateTimeParseException dtpe) {
      System.out.println("The string is not a date and time of format \"wwuu\" : " + dtpe.getMessage());
      return false;
    }
  }

我将格式化程序定义为使用星期一作为一周的默认日期。然后我只格式化了一个LocalDate,并指定我想要这个日期为“atStartOfDay”。

 类似资料:
  • 如果我有: 例句:如果我想从21/04/2014开始在酒店预订房间,那应该是不可能的,因为今天是28/07/2014。 我如何在JavaFX中做到这一点?

  • 问题内容: 我正在从一个字符串中解析两个日期,如下所示: 我需要做的是找出这两个日期之间的区别,例如: = 8天2小时36分钟21秒 ^这是我需要的两个日期/时间 我相信我需要解析格式并将其转换为另一种格式,然后减去两者之间的差并进行数学运算以得出之间的天/小时/分钟/秒 问题答案: 与其他回答者试图暗示的相反,在标准Java SE中,计算两个日期之间的差异并不是那么简单。 您的第一步确实是将这些

  • 问题内容: 我已经编写了一些代码来检查两个日期,即开始日期和结束日期。如果结束日期早于开始日期,则会提示您结束日期早于开始日期。 我还想添加检查开始日期是否在今天之前(今天和用户使用该应用程序的那天一样)。(下面的日期检查器代码,如果有任何影响,那么所有这些都为Android编写) 问题答案: 这有帮助吗?

  • 问题内容: 该函数似乎只返回false。你们有没有一样?我敢肯定,我正在忽略一些东西,但是,新鲜的眼睛和所有这些… 我使用以下命令调用该函数: 问题答案: 如果您的PHP> = 5.1: 除此以外:

  • 问题内容: 有没有一种方法来获取数字的最后一位数字。我试图找到以“ 1”结尾的变量,例如1,11,21,31,41等。 如果我使用文本变量,我可以简单地输入 但是它适用于带有文本的变量(例如“ hello”),而不适用于数字。对于数字,我会遇到此错误: 我试图看看是否有更好的方法来处理数字。我知道一个解决方案是将其转换为字符串,然后执行上面的命令,但是我正在尝试查看是否还有另一种错过的方式。 提前

  • 我有几个yyyy-mm-dd格式的日期,为了处理它们,我使用了碳库。 我的问题是:我如何知道当前年份中是否已经存在随机日期? 例如,今天是2018-10-19,如果我将其与一些日期进行比较,请返回以下内容: 我尝试了以下方法: 我的问题是,我不知道如何应用此条件仅在当前年份中查找日期,因为如果我将当前日期与前一年的日期进行比较,它仍然返回true。我怎样才能做到这一点?非常感谢。