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

日期对象,从天、月、年

蓬英逸
2023-03-14
String DAY = "31"
String YEAR = "2012"
String MONTH = "11"

我需要一个可配置的格式作为输出。

String format = "MM/dd/yyy";

我将永远只获得从“01”到“31”的日期字符串
我将永远只获得从“1000”到“9999”的年份字符串
我将永远只获得从“01”到“12”的月份字符串(永远不获得一月、二月等)

我知道SimpleDateFormat(format)可以在一定程度上起作用。

类似于:

Date dateParser(String format){
  
  String DAY = "01";
  String YEAR = "1922";
  String MONTH = "02";
  
  
  return date;
}

共有1个答案

徐文斌
2023-03-14

基本上有两种方式:

  1. 将每个字符串解析为一个数字,并将这些数字组合为一个日期。
  2. 将字符串合并为一个字符串,并将其解析为日期。

一些中间形式是可以想象的,但我建议你采取一个纯粹的立场,只使用其中的一种方式。Arvind Kumar Avinash的答案显示了选项1。我更喜欢选项2,所以让我来演示一下。

    String format = "MM/dd/yyy";
    
    String day = "31";
    String year = "2012";
    String month = "11";
    
    DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern(format, Locale.US);
    
    String isoDateString = year + '-' + month + '-' + day;
    LocalDate date = LocalDate.parse(isoDateString);
    
    String formattedDate = date.format(dateFormatter);
    System.out.println(formattedDate);

由于11月(第11个月)只有30天,因此这段代码非常明智地抛出了一个异常:

线程“main”java.time.format.DateTimeParseException中出现异常:无法解析文本“2012-11-31”:无效的日期“11月31”

也就是说,我们获得了免费的输入验证。对于有效的日期,代码将根据请求解析日期和格式。

 类似资料:
  • 问题内容: 输出为: 1988年 1月25 日星期三00:00:08 IST 1989 我过去了,但我得到了。为什么? 问题答案: 日历中的月份从零开始。因此,将12解释为12月+ 1个月。用

  • 输出为: 1988 1989年1月25 00:00:08日星期三 我通过了1988年12月25日的考试,但我得到了1989年1月25日的考试。为什么?

  • 当我使用以下代码时,Object错误。 谁能告诉我如何从年、月和日的值中获取Date对象?

  • 我不确定这是否可能? 我得拿到密码才能读 今天的月份即2月今天的日期即17月底的日期即31日,然后是一年中的其他11个月,在一行中按顺序排列 8月1日-31日|9月|10月|11月|12月|1月|2月|3月|4月|5月|6月|7月 请以最佳方式提供任何建议? 多谢 定时(timing的缩写)

  • 我有两次约会。一个是以YYYYMMDD格式从其他应用程序的表中检索的,第二个日期是本地时间,我需要这两个日期之间的天数/月/年。 我试过了 但这给了我一些乱七八糟的数字。 变量$t=Fri Dec31 00:00:00 9999 变量$今天=Wed Feb19 14:40:55 2020 产出:25182094888 有什么想法吗?提前谢谢。