【发布时间】:2019-08-02 08:01:39
【问题描述】:
我正在尝试将数据从字符串转换为 Data 类,以便稍后将其与其他数据进行比较。
我的数据格式:dd-MM-yyyy(例如 31-07-2019)。
问题是format.parse("string date") 操作后显示错误的数据格式:
Wed Jul 31 00:00:00 UTC 2019
这是我的代码:
import java.text.SimpleDateFormat;
import java.text.ParseException;
import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.InputStream;
import java.util.*;
public class Program {
public static void main(String[] args) {
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");
try {
String dateString = format.format(new Date());
String dateStr = "31-07-2019";
Date date = format.parse(dateStr);
System.out.println(dateString);
System.out.println(date);
} catch (ParseException e) {
System.out.println("ParseError " + e.getMessage());
}
}
}
dateString(即当前日期)解析成功。
【问题讨论】:
-
基本上,当您调用
System.out.println(date);时,您正在调用System.out.println(date.toString());- 如果您查看Date的toString方法,您会发现它当然没有使用SimpleDateFormat -
我该如何管理?
-
如果您只是担心日期的打印方式,那根本不是解析问题。这是格式问题。
-
SimpleDateFormat是出了名的麻烦,Date的设计也很糟糕。两者都已经过时了。我建议您改用现代的LocalDate和DateTimeFormatter。无论我们是在谈论Date还是LocalDate,他们都没有,因为不能有格式。由于您希望他们能够比较它们,因此您不必担心这个事实。
标签: java date simpledateformat