在java中表示日期的最佳方式

Mas*_*sin 5 java date

我正在设计一个预订系统,只需要表示 2015 年的日期,格式为“dd, mmm, 2015”(例如“05 jan 2015”)。我对如何做到这一点有点困惑,看起来 Date 支持这样的东西,但现在已经贬值了?我也对公历类感到困惑 GregorianCalender(2015, 01, 05) 表示 2015 年的日期还是完全是另一个对象?

vbe*_*nar 6

java.time.LocalDate

如果您使用的是 Java 8 或更高版本,则应使用java.time.LocalDateclass。

要解析和格式化此日期,您需要使用java.time.format.DateTimeFormatterclass。

用法示例:

LocalDate date = LocalDate.of(2015, Month.JANUARY, 5);
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd, MMM, yyyy", Locale.ENGLISH);
System.out.println(formatter.format(date)); // prints "05, Jan, 2015"
date = LocalDate.parse("06, Jan, 2015", formatter);
System.out.println(date.getDayOfMonth()); // prints "6"
Run Code Online (Sandbox Code Playgroud)

如果您使用的是 Java 7 或更早版本,则应使用java.util.Date类来表示日期、java.util.GregorianCalendar从字段创建日期对象或检索日期组件以及java.text.SimpleDateFormat解析和格式化。用法示例:

GregorianCalendar gregorianCalendar = new GregorianCalendar();
gregorianCalendar.set(2015, Calendar.JANUARY, 5);
Date date = gregorianCalendar.getTime();
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd, MMM, yyyy", Locale.ENGLISH);
System.out.println(simpleDateFormat.format(date)); // prints "05, Jan, 2015"
date = simpleDateFormat.parse("06, Jan, 2015");
gregorianCalendar.setTime(date);
System.out.println(gregorianCalendar.get(Calendar.DAY_OF_MONTH)); // prints "6"
Run Code Online (Sandbox Code Playgroud)


Piz*_*rog 0

我不确定您在哪里看到了弃用,但我仍然会使用 Date 和 DateFormat 对象。

DateFormat format = new SimpleDateFormat("dd MM");
String output;

output = format.format(new Date()) + " 2015";
System.out.println(output);
Run Code Online (Sandbox Code Playgroud)

输出:

06 04 2015
Run Code Online (Sandbox Code Playgroud)

如果你想删除 0,请将代码更改为:

    DateFormat format = new SimpleDateFormat("dd MM");
    String output;

    output = format.format(new Date());
    output = output.replaceAll("0", "") + " 2015";
    System.out.println(output);
Run Code Online (Sandbox Code Playgroud)

输出:

6 4 2015
Run Code Online (Sandbox Code Playgroud)

有关 SimpleDateFormat 的更多信息,请参阅 javadoc:SimpleDateFormat Reference