如何将 Java 中的日期格式化为仅月、日和小时?

发布于 11-30 13:14 字数 595 浏览 0 评论 0原文

如果我只需要打印月份 (MMM)、日期 (DD) 和小时 (HH),我该如何格式化日期?

所以输出看起来像这样:(

Jul 18 9

即 7 月 18 日 09:00)。

我已经尝试过以下方法

private static void createDate () {

    String startConcat = startMonth + " " + startDate + " " + startTime;
    DateFormat start = new SimpleDateFormat ("MMM DD H");

    try {
       Date date = (Date)start.parse(startConcat);
       System.out.println(date);

    } catch (ParseException e) {
    }
}

,而且它似乎也没有正确读取我的月份...我将此作为输出,

Sun Jan 18 09:00:00 EST 1970

任何帮助将不胜感激。

How would I format the date, if I only need it to print the month (MMM), date (DD) and the hour (HH)?

So output would look something like:

Jul 18 9

(that being July 18th 09:00).

I've tried the following

private static void createDate () {

    String startConcat = startMonth + " " + startDate + " " + startTime;
    DateFormat start = new SimpleDateFormat ("MMM DD H");

    try {
       Date date = (Date)start.parse(startConcat);
       System.out.println(date);

    } catch (ParseException e) {
    }
}

Also it doesn't seem to read my month properly too...I am getting this as an output

Sun Jan 18 09:00:00 EST 1970

any help would be deeply appreciated.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

堇色安年2024-12-07 13:14:07

您应该使用格式 (javadoc) 方法。

private static void createDate () throws Exception {
    String startConcat = startMonth + " " + startDate + " " + startTime;
    DateFormat formatter = new SimpleDateFormat ("MMM DD H");

    Date date = (Date) formatter.parse(startConcat);
    System.out.println(formatter.format(date));
}

You should use the format (javadoc) method.

private static void createDate () throws Exception {
    String startConcat = startMonth + " " + startDate + " " + startTime;
    DateFormat formatter = new SimpleDateFormat ("MMM DD H");

    Date date = (Date) formatter.parse(startConcat);
    System.out.println(formatter.format(date));
}
爱已欠费2024-12-07 13:14:07

您正在定义用于解析日期的模式,而不是打印日期。您还需要使用输出模式;

System.out.println(start.format(date));

You are defining the pattern for parsing the date, not printing the date. You will need to also use the pattern for the output;

System.out.println(start.format(date));
音盲2024-12-07 13:14:07

现代 Java

在 Java 8+ 中,使用 java.time 类取代了存在严重缺陷的遗留类,例如 CalendarCalendarSimpleDateFormat

MonthDay

要表示没有年份的月份和日期,请使用 MonthDay

MonthDay monthDay = MonthDay.of( Month.JULY , 18 ) ;

LocalTime

要表示仅时间值,请使用 本地时间

LocalTime localTime = LocalTime.of( 9 , 0 );

DateTimeFormatter

生成文本。

传递 Locale 指定自动本地化月份名称所需的人类语言和文化规范。

Locale locale = Locale.of( "en" , "US" );  
DateTimeFormatter fMD = DateTimeFormatter.ofPattern( "MMM dd" ).withLocale( locale ) ;
String md = monthDay.format( fMD ) ;

DateTimeFormatter fLT = DateTimeFormatter.ofPattern( "H" ) ;
String t = localTime.format( fLT ) ;

String output = String.join( " " , md , t ) ;

请参阅在 Ideone.com 上运行的代码

7月18日9

Modern Java

In Java 8+, use the java.time classes that supplanted the terribly flawed legacy classes such as Calendar & SimpleDateFormat.

MonthDay

To represent a month and day without a year, use MonthDay.

MonthDay monthDay = MonthDay.of( Month.JULY , 18 ) ;

LocalTime

To represent a time-only value, use LocalTime.

LocalTime localTime = LocalTime.of( 9 , 0 );

DateTimeFormatter

Generate text.

Pass a Locale to specify the human language and cultural norms needed to automatically localize the name of the month.

Locale locale = Locale.of( "en" , "US" );  
DateTimeFormatter fMD = DateTimeFormatter.ofPattern( "MMM dd" ).withLocale( locale ) ;
String md = monthDay.format( fMD ) ;

DateTimeFormatter fLT = DateTimeFormatter.ofPattern( "H" ) ;
String t = localTime.format( fLT ) ;

String output = String.join( " " , md , t ) ;

See this code run at Ideone.com..

Jul 18 9

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文