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对象跟踪位置时要注意这一点。