【发布时间】: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进行相应的格式化。 -
我建议你不要使用
SimpleDateFormat和Date。这些类设计不佳且早已过时,尤其是前者,尤其是出了名的麻烦。而是使用来自java.time, the modern Java date and time API 的LocalDateTime和DateTimeFormatter。 -
非常感谢。今天我学到了。