8.2.9 格式化Date对象

优质
小牛编辑
127浏览
2023-12-01

本节提供了一个实例来演示如何使用DateFormat类和SimpleDateFormat类格式化Date对象,以及如何将格式化后的字符串追加到指定的字符串后面,最后演示了修改时区的方法。

例子 : 格式化Date对象

实例的代码如下:

package chapter8;
import java.text.SimpleDateFormat;
import java.text.DateFormat;
import java.text.FieldPosition;
import java.util.TimeZone;
import java.util.Date;
import java.util.Locale;
public class FormatDateTime
{
    public static void main(String[] args) throws Exception
    {
        System.out.println("使用默认的日期/时间显示模式和操作系统默认的本地环境格式化当前日期");
        DateFormat df1 = DateFormat.getDateTimeInstance();
        Date date = new Date();
        System.out.println(df1.format(date));
        System.out.println("使用分别指定的日期/时间显示模式和本地环境格式化当前日期");
        DateFormat df2 = DateFormat.getDateTimeInstance(DateFormat.LONG,
                DateFormat.LONG, Locale.CHINA);
        System.out.println(df2.format(date));
        System.out.println("使用SimpleDateFormat类格式化日期/时间");
        SimpleDateFormat sdf = new SimpleDateFormat(
                "yyyy年MM月dd日   HH时mm分ss秒  S毫秒");
        System.out.println(sdf.format(date));
        System.out.println("将格式化后的日期/时间字符串追加到指定字符串后面,并跟踪秒在结果字符串中的索引位置");
        StringBuffer sb = new StringBuffer("现在的时间是:");
        FieldPosition fp = new FieldPosition(DateFormat.SECOND_FIELD);
        String dateString = df2.format(date, sb, fp).toString();
        System.out.println(dateString);
        System.out.println("秒的开始索引位置:" + fp.getBeginIndex());
        System.out.println("秒后面第一个字符的索引位置:" + fp.getEndIndex());
        System.out.println("从结果字符串中截取的秒:"
                + dateString.substring(fp.getBeginIndex(), fp.getEndIndex()));
        System.out.print(TimeZone.getTimeZone("Europe/London").getDisplayName() + ":");
        // 设置时区为英国伦敦
        df1.setTimeZone(TimeZone.getTimeZone("Europe/London"));
        //  输出格林威治时间
        System.out.println(df1.format(date));               
    }
}

运行上面的程序后,将输出如下的内容:

使用默认的日期/时间显示模式和操作系统默认的本地环境格式化当前日期

2008-10-18 15:07:47

使用分别指定的日期/时间显示模式和本地环境格式化当前日期

2008年10月18日 下午03时07分47秒

使用SimpleDateFormat类格式化日期/时间

2008年10月18日  15时07分47秒 656毫秒

将格式化后的日期/时间字符串追加到指定字符串后面,并跟踪秒在结果字符串中的索引位置

现在的时间是:2008年10月18日 下午03时07分47秒

秒的开始索引位置:27

秒后面第一个字符的索引位置:29

从结果字符串中截取的秒:47

格林威治时间:2008-10-18 8:07:47

在上面输出结果的最后一行是当前的格林威治时间(GMT),关于格林威治时间的详细介绍,请读者参阅8.4.4节的内容。在这里只要知道英国伦敦的时间就是格林威治时间即可。

FieldPosition对象返回的位置都是通过UCS2编码计算的,因此,一个汉字只算一个长度。在使用FieldPosition对象跟踪位置时要注意这一点。