DateFormat、SimpleDateFormat学习笔记

来源:互联网 发布:编程学习网 编辑:程序博客网 时间:2024/06/05 11:55
G  Era 标志符  Text  AD  y  年  Year  1996; 96  M  年中的月份  Month  July; Jul; 07  w  年中的周数  Number  27  W  月份中的周数  Number  2  D  年中的天数  Number  189  d  月份中的天数  Number  10  F  月份中的星期  Number  2  E  星期中的天数  Text  Tuesday; Tue  a  Am/pm 标记  Text  PM  H  一天中的小时数(0-23)  Number  0  k  一天中的小时数(1-24)  Number  24  K  am/pm 中的小时数(0-11)  Number  0  h  am/pm 中的小时数(1-12)  Number  12  m  小时中的分钟数  Number  30  s  分钟中的秒数  Number  55  S  毫秒数  Number  978  z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00  Z  时区  RFC 822 time zone  -0800 



测试代码  

package com.undergrowth.text;import java.text.DateFormat;import java.text.FieldPosition;import java.text.ParseException;import java.text.ParsePosition;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Calendar;import java.util.Date;import java.util.HashMap;import java.util.List;import java.util.Locale;import java.util.Map;import org.junit.Test;/** * Format-->用于处理语言环境敏感的信息 * format-->对象转为字符串 * parseObject-->字符串转为对象 * DateFormat-->处理日期、时间格式化 * SimpleDateFormat-->日期格式化的实现类 * --------------------------------------G  Era 标志符  Text  AD  y  年  Year  1996; 96  M  年中的月份  Month  July; Jul; 07  w  年中的周数  Number  27  W  月份中的周数  Number  2  D  年中的天数  Number  189  d  月份中的天数  Number  10  F  月份中的星期  Number  2  E  星期中的天数  Text  Tuesday; Tue  a  Am/pm 标记  Text  PM  H  一天中的小时数(0-23)  Number  0  k  一天中的小时数(1-24)  Number  24  K  am/pm 中的小时数(0-11)  Number  0  h  am/pm 中的小时数(1-12)  Number  12  m  小时中的分钟数  Number  30  s  分钟中的秒数  Number  55  S  毫秒数  Number  978  z  时区  General time zone  Pacific Standard Time; PST; GMT-08:00  Z  时区  RFC 822 time zone  -0800  -------------------------------------- * @author Administrator * */public class DateFormatLearn {//日期格式DateFormat dateFormat;//日历Calendar calendar;//日期Date nowDate=new Date(System.currentTimeMillis());//日期格式化具体类SimpleDateFormat simpleDateFormat=new SimpleDateFormat();//时间字符串String nowTimeString,pattern;//解析位置ParsePosition parsePosition=new ParsePosition(0);//字段位置 跟踪字符串FieldPosition fieldPosition=new FieldPosition(DateFormat.MONTH_FIELD);/** * 测试DateFormat的静态方法 getAvailableLocales */@Testpublic void testDateFormatAvailableLocales(){Locale[] locales=DateFormat.getAvailableLocales();availLocale(locales);}/** * 遍历可得到的语言环境 * @param locales */private void availLocale(Locale[] locales) {for (Locale locale : locales) {System.out.println(locale.getCountry() + "\t"+ locale.getDisplayCountry() + "\t"+ locale.getDisplayName() + "\t" + locale.getLanguage()+ "\t" + locale.getDisplayLanguage());}}/** * 测试获取DateFormat的获取 */@Testpublic void testDateFormat(){//获取日期格式化dateFormat=DateFormat.getDateInstance();//获取到与日期格式化相关的日期calendar=dateFormat.getCalendar();//按照默认格式格式化日期defaultFormatDate();}/** * 按照默认格式格式化日期 */private void defaultFormatDate() {// TODO Auto-generated method stub nowTimeString=dateFormat.format(nowDate);System.out.println(nowTimeString);System.out.println(System.currentTimeMillis());System.out.println(calendar.getTimeInMillis());}/** * SimpleDateFormat-->解析日期格式的实现类 */@Testpublic void testSimpleDateFormat(){//默认格式formatSimpleDateFormat();//修改日期格式化模式List<String> patternsList=createListPattern();//迭代日期格式for (String pattern : patternsList) {simpleDateFormat.applyPattern(pattern);formatSimpleDateFormat();}}/** * 创建一系列的模式 * @return */private List<String> createListPattern() {// TODO Auto-generated method stubList<String> patternsList=new ArrayList<String>();patternsList.add("yyyy-MM-ddHH:mm:ss.Sz");patternsList.add("Gyyyy-MM-dda HH:mm:ss.Sz");patternsList.add("Gyyyy-MM-ddkk:mm:ss.Sz");patternsList.add("yyyy-MM-dda hh:mm:ss.Sz");patternsList.add("Gyyyy-MM-ddKK:mm:ss.Sz");patternsList.add(" 一年中的第DD天HH:mm:ss.SZ");patternsList.add("G 一年中的第DD天HH:mm:ss.SZ");patternsList.add("G 月份中的星期数:FFHH:mm:ss.SZ");patternsList.add("G 星期中的天数:EEHH:mm:ss.SZ");return patternsList;}/** * 测试不同的模式 */private void formatSimpleDateFormat() {nowTimeString=simpleDateFormat.format(nowDate);System.out.println(simpleDateFormat.toPattern());System.out.println(nowTimeString);}/** * 解析字符串为对象 */@Testpublic void testPrase(){try {Map<String, String> datePattern=createPatternsMap();//迭代不同的模式 将其转换为日期for (Map.Entry<String, String> dateEntry : datePattern.entrySet()) {//获取字符串和日期模式System.out.println(dateEntry.getKey()+"---对应模式---"+dateEntry.getValue());simpleDateFormat.applyPattern(dateEntry.getValue());System.out.println(simpleDateFormat.parse(dateEntry.getKey()));}} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}}/** * 创建不同的日期和时间模式 * @return */private Map<String, String> createPatternsMap() {// TODO Auto-generated method stubMap<String, String> datePattern=new HashMap<String, String>();List<String> patternsList=createListPattern();//迭代日期格式for (String pattern : patternsList) {simpleDateFormat.applyPattern(pattern);nowTimeString=simpleDateFormat.format(nowDate);//将不同的日期和模式存储在Map中datePattern.put(nowTimeString, pattern);}return datePattern;}/** * 测试解析位置 */@Testpublic void testPrasePosition(){nowTimeString=simpleDateFormat.format(nowDate);System.out.println("带解析的字符串-->"+nowTimeString);System.out.println("日期格式化模式-->"+simpleDateFormat.toPattern());System.out.println("开始的位置-->"+parsePosition.getIndex());System.out.println("解析的日期-->"+simpleDateFormat.parse(nowTimeString,parsePosition));System.out.println("解析完的位置-->"+parsePosition.getIndex());System.out.println("解析的日期-->"+simpleDateFormat.parse(nowTimeString,parsePosition));}/** * 测试日期常量 */@Testpublic void testConstants(){//用于表示月份常量System.out.println(DateFormat.MONTH_FIELD);simpleDateFormat.applyPattern("yyyy-MM-ddHH:mm:ss.Sz");StringBuffer toAppendTo=new StringBuffer();//转换日期 跟踪日期字符串nowTimeString=simpleDateFormat.format(nowDate,toAppendTo,fieldPosition).toString();System.out.println(nowTimeString);System.out.println(toAppendTo.toString());//获取字符串的起始位置System.out.println(fieldPosition.getBeginIndex()+"\t"+fieldPosition.getEndIndex());}}


0 0