我需要将字符串转换为日期(以 dd-MM-yyyy 格式)。但是 dateformat.parse 以秒为单位给出格式。我需要以与上述相同的格式将字符串日期转换为日期。
1950 次
3 回答
1
如果您不需要使用时间或时区,您可以通过 LocalDate.
String str = "01-01-2000";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate date = LocalDate.parse(str, formatter);
请注意,对于日期和时间,人们大部分时间都需要 ZonedDateTime 而不是 LocalDateTime。这个名字是违反直觉的;两者中的本地LocalDate和LocalDateTime表示一般的任何地方,而不是特定的时区。
于 2019-12-04T10:09:17.767 回答
1
该类Date将始终包含日期和时间信息,因为它代表时间的瞬间。
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParsingDate {
public static void main(String[] args) {
DateFormat fmt = new SimpleDateFormat("dd-MM-yyyy");
Date d;
try {
d = fmt.parse("04-12-2019");
System.out.println(d); // Wed Dec 04 00:00:00 CET 2019
} catch (ParseException e) {
e.printStackTrace();
}
}
}
如您所见,小时、分钟、秒和毫秒都设置为 0。
如果以后想以字符串格式输出日期,则需要使用DateFormat#format(Date)方法:
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ParsingDate {
public static void main(String[] args) {
DateFormat fmt = new SimpleDateFormat("dd-MM-yyyy");
Date d = new Date();
System.out.println(d); // Wed Dec 04 11:24:35 CET 2019
System.out.println(fmt.format(d)); // 04-12-2019
}
}
如果您宁愿只存储日期信息,您可以使用java.time包并使用LocalDate.
LocalDate仅存储日期信息,因为它不代表瞬间,而是年、月和日期的三元组。
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class ParsingLocalDate {
public static void main(String[] args) {
DateTimeFormatter fmt = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate d = LocalDate.parse("04-12-2019", fmt);
System.out.println(d); // 2019-12-04
}
}
于 2019-12-04T10:20:51.920 回答
1
在大多数编程语言中,日期/时间类型只是从给定时间点过去的时间量的容器。他们没有格式。
对于 Java (AFAIR),时间以 Unix 纪元以来的毫秒数为单位。
由于是 2019 年,没有理由不使用java.timeAPI(或ThreeTen backport),您应该避免使用现在已被有效弃用的旧 API
将字符串解析为LocalDate
DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
LocalDate localDate = LocalDate.parse("08-03-1972", inputFormatter);
格式化LocalDate为所需的格式
DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd EEE MMM yyyy");
String value = localDate.format(outputFormatter);
System.out.println(value);
哪个输出
08 Wed. Mar. 1972
于 2019-12-04T10:23:45.377 回答