我正在设计一个预订系统,只需要表示 2015 年的日期,格式为“dd, mmm, 2015”(例如“05 jan 2015”)。我对如何做到这一点有点困惑,看起来 Date 支持这样的东西,但现在已经贬值了?我也对公历类感到困惑 GregorianCalender(2015, 01, 05) 表示 2015 年的日期还是完全是另一个对象?
java.time.LocalDate
如果您使用的是 Java 8 或更高版本,则应使用java.time.LocalDate
class。
要解析和格式化此日期,您需要使用java.time.format.DateTimeFormatter
class。
用法示例:
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)
我不确定您在哪里看到了弃用,但我仍然会使用 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
归档时间: |
|
查看次数: |
9956 次 |
最近记录: |