【问题标题】:Convert String to Date Java [duplicate]将字符串转换为日期 Java [重复]
【发布时间】:2021-04-09 00:51:30
【问题描述】:

如何在java中将这两个字符串分别转换为各自的日期?

String day = "2021-05-9"  -> Date ?

String hour = "23:59:00"  -> Date ?

【问题讨论】:

  • 嗨@AndreProenza - 看看这个回答上一个问题stackoverflow.com/a/4216767/15310387。如果您仍然有问题,那么请用您尝试过但不起作用的方法更新问题......另外考虑一下小时案例 - 是今天 23:59 还是其他日期......??
  • 日期如何在月份或日期中为零?
  • 这能回答你的问题吗? Java string to date conversion
  • 您的搜索结果是什么?它是如何不足的?

标签: java date parsing


【解决方案1】:

解析为适当的 java.time 类型。

LocalDate ld = LocalDate.parse( "2021-05-23" ) ;
LocalTime lt = LocalTime.parse( "23:00:00" ) ;

如果Date 是指java.util.Date,那么这个可怕的类在几年前就被 JSR 310 中定义的现代 java.time 类所取代。永远不要使用 Date

此外,java.util.Date 类代表 UTC 中的时刻。如果结合您的日期和时间,我们仍然会缺少与 UTC 或时区偏移的上下文。

如果您想结合日期和时间,请使用LocalDateTime 类。

LocalDateTime ldt = LocalDateTime.of( ld , lt ) ;

但请注意,此类不能代表时刻,也不是时间轴上的一个点,因为它没有偏移量或时区。

【讨论】:

    【解决方案2】:

    你可以试试这个。

    try {
         String day = "2021-05-09";
         String hour = "23:59:00";
         Date dt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(day + " " + hour);
         System.out.println(dt);
        }catch (ParseException e) {
                e.printStackTrace();
        }
    

    【讨论】:

    • 请不要教年轻人使用陈旧而臭名昭著的SimpleDateFormat类。至少不是第一选择。而且不是没有任何保留。我们在java.time, the modern Java date and time API, 和它的DateTimeFormatter 中做得更好。
    猜你喜欢
    • 2011-08-30
    • 2017-11-20
    • 2023-03-30
    • 2011-06-08
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 2012-12-05
    • 2020-01-24
    相关资源
    最近更新 更多