日期时间对象应该存储有关日期、时间、时区等信息,而不是有关格式的信息。您可以使用日期时间格式化 API 将日期时间对象格式化为您选择的模式的String
。
- 现代日期时间类型的日期时间格式化 API 位于包中,
java.time.format
,例如 java.time.format.DateTimeFormatter
、java.time.format.DateTimeFormatterBuilder
等。
- 传统日期时间类型的日期时间格式化 API 位于包中,
java.text
,例如 java.text.SimpleDateFormat
、java.text.DateFormat
等。
使用现代 API 的演示:
import java.time.LocalDate;
import java.time.Month;
import java.time.ZoneId;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
ZonedDateTime zdt = ZonedDateTime.of(LocalDate.of(2012, Month.DECEMBER, 1).atStartOfDay(),
ZoneId.of("Europe/London"));
System.out.println(zdt);
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd", Locale.ENGLISH);
String formattedDate = dtf.format(zdt);
System.out.println(formattedDate);
}
}
输出:
2012-12-01T00:00Z[Europe/London]
2012-12-01
从Trail: Date Time了解现代日期时间API。
使用传统API的演示:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import java.util.TimeZone;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("GMT"));
calendar.setTimeInMillis(0);
calendar.set(Calendar.YEAR, 2012);
calendar.set(Calendar.MONTH, 11);
calendar.set(Calendar.DAY_OF_MONTH, 1);
Date date = calendar.getTime();
System.out.println(date);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
String formattedDate = sdf.format(date);
System.out.println(formattedDate);
}
}
输出:
Sat Dec 01 00:00:00 GMT 2012
2012-12-01
一些更重要的点:
java.util.Date
对象不是像 现代日期时间类型 那样的真正日期时间对象;而是代表自 1970 年 1 月 1 日纪元
起的毫秒数。当您打印一个 java.util.Date
对象时,它的 toString
方法返回从这个毫秒值计算出的日期时间。由于 java.util.Date
没有时区信息,它会应用您的 JVM 时区并显示相同的时间。如果您需要在不同的时区打印日期时间,则需要设置时区为 SimpleDateFormat
并从中获取格式化字符串。
java.util
的日期时间 API 及其格式化 API SimpleDateFormat
已经过时且容易出错。建议完全停止使用它们,改用 现代日期时间 API。
public Date ConvertDate(Date date)
的含义是什么? - vels4jDate
没有格式。你只能在Date
外的String
中拥有你想要的格式。详见 All about java.util.Date。 - Ole V.V.