【问题标题】:How do I convert date formatted string timestamp into date? [duplicate]如何将日期格式的字符串时间戳转换为日期? [复制]
【发布时间】:2020-07-24 06:54:26
【问题描述】:

我需要将当前时间戳和当前负 1 分钟时间戳转换为给定格式。我能够转换所需的格式。但它以字符串形式返回。

我需要格式化输出为日期而不是字符串。

public static void main(String[] args) throws ParseException
{
    SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:00");
    long now = System.currentTimeMillis();
    String toTimeStamp = dateFormatter.format(now);
    long nowMinus1Minutes = now - TimeUnit.MINUTES.toMillis(1);
    String fromTimeStamp = dateFormatter.format(nowMinus1Minutes);
    System.out.println(fromTimeStamp);
    System.out.println(toTimeStamp);

    // Tried with parse
    Date fromDate = dateFormatter.parse(fromTimeStamp);
    Date toDate = dateFormatter.parse(toTimeStamp);

    System.out.println(fromDate);
    System.out.println(toDate);

}

Output:(String)

2020-07-24 12:13:00 
2020-07-24 12:12:00

Output: Pose Parsed the string as Date

Fri Jul 24 12:16:00 IST 2020
Fri Jul 24 12:17:00 IST 2020

预期输出:

2020-07-24 12:13:00 (As Date Object)
2020-07-24 12:12:00 (As Date Object)

【问题讨论】:

  • “我需要将格式化输出作为日期而不是字符串” - 这是不可能的,您误解了 Date 对象是什么。它只是一个时间戳值,没有格式。没有“具有特定格式的Date 对象”之类的东西。就像int 只是一个数字一样,它不包含有关如何格式化数字的任何信息。如果您需要以特定格式显示Date 对象,请使用SimpleDateFormatter 进行相应的格式化。
  • 我建议你不要使用SimpleDateFormatDate。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time APILocalDateTimeDateTimeFormatter
  • 非常感谢。今天我学到了。

标签: java date


【解决方案1】:

不可能。最近明白了。关闭这个。

【讨论】:

    【解决方案2】:

    一旦您将字符串转换为日期,即您使用的初始格式,无论它丢失了什么。

    如果您想在“yyyy-MM-dd HH:mm:00”中显示您的数据,请再次使用您的格式化程序,否则 Date 类将坚持其默认格式:

    System.out.println(formatter.format(fromDate));
    System.out.println(formatter.format(toDate));
    

    【讨论】:

      【解决方案3】:

      如果你需要两个 Date-Object,你可以这样做:

          OffsetDateTime offsetDateTime1 = OffsetDateTime.now();
          OffsetDateTime offsetDateTime2 = offsetDateTime1.minusMinutes(1);
      
          System.out.println(Date.from(offsetDateTime1.toInstant()));
          System.out.println(Date.from(offsetDateTime2.toInstant()));
      

      如果您需要以其他格式打印时间戳,您可以在之后的Date-Objects 上使用SimpleDateFormat

      【讨论】:

      • 如果您需要格式化字符串,最好使用DateTimeFormatter 格式化OffsetDateTimes。
      猜你喜欢
      • 1970-01-01
      • 2016-07-04
      • 2013-10-04
      • 2016-11-26
      • 2023-03-27
      • 1970-01-01
      • 2014-08-10
      • 2020-09-23
      • 1970-01-01
      相关资源
      最近更新 更多