Java如何格式化包含时间信息的消息?

在这里,我们演示如何使用java.text.MessageFormat该类来格式化包含时间信息的消息。

package org.nhooo.example.text;

import java.util.Date;
import java.util.Calendar;
import java.util.Locale;
import java.text.MessageFormat;

public class MessageFormatTime {
    public static void main(String[] args) {
        Date today = new Date();
        Calendar calendar = Calendar.getInstance();
        calendar.add(Calendar.HOUR, 7);

        Date nextWeek = calendar.getTime();

        // 我们希望消息为Locale.US
        Locale.setDefault(Locale.US);

        // 格式化包含日期信息的时间。
        String message = MessageFormat.format("Now is {0} and the next " +
                "7 hours is {1}", today, nextWeek);
        System.out.println(message);

        // 格式化时间并仅显示时间部分
        message = MessageFormat.format("Now is {0, time} and the next " +
                "7 hours is {1, time}", today, nextWeek);
        System.out.println(message);

        // 使用短格式(例如HH:mm am / pm)格式化时间
        message = MessageFormat.format("Now is {0, time, short} and " +
                "the next 7 hours is {1, time, short}", today, nextWeek);
        System.out.println(message);

        // 使用中等格式(例如HH:mm:ss am / pm)格式化时间。
        message = MessageFormat.format("Now is {0, time, medium} and " +
                "the next 7 hours is {1, time, medium}", today, nextWeek);
        System.out.println(message);

        // 使用长格式(例如HH:mm:ss am / pm TIMEZONE)格式化时间。
        message = MessageFormat.format("Now is {0, time, long} and the " +
                "next 7 hours is {1, time, long}", today, nextWeek);
        System.out.println(message);

        // 使用完整格式(例如HH:mm:ss am / pm TIMEZONE)格式化时间。
        message = MessageFormat.format("Now is {0, time, full} and the " +
                "next 7 hours is {1, time, full}", today, nextWeek);
        System.out.println(message);

        // 使用自定义模式设置时间格式。
        message = MessageFormat.format("Now is {0, time, HH:mm:ss.sss} " +
                "and the next 7 hours is {1, time, HH:mm:ss.sss}", today, nextWeek);
        System.out.println(message);
    }
}

上面的程序产生:

Now is 2/15/18, 9:07 PM and the next 7 hours is 2/16/18, 4:07 AM
Now is 9:07:26 PM and the next 7 hours is 4:07:26 AM
Now is 9:07 PM and the next 7 hours is 4:07 AM
Now is 9:07:26 PM and the next 7 hours is 4:07:26 AM
Now is 9:07:26 PM CST and the next 7 hours is 4:07:26 AM CST
Now is 9:07:26 PM China Standard Time and the next 7 hours is 4:07:26 AM China Standard Time
Now is  21:07:26.026 and the next 7 hours is  04:07:26.026