java日期处理(三)
时间:2010-05-12 来源:mcuflower
在日常的开发中我们经常会遇到这样的场景,用户输入的时候一个格式化的时间字符串(2009-06-10),程序需要将这个字符串转化为时间日期时间类型的变量,以便进行相关的计算。有时候从存储设备(数据库)中取出的数据是时间日期型对象,我们需要将其转换为一定格式的字符串然后输出给用户。
首先我们需要分析一下java中如何将时间日期类型的格式化为指定的字符串。代码如下
Code:- String dateString; //输出的日期时间字符串
- SimpleDateFormat sdf;//只包含日期的格式化对象
- SimpleDateFormat sdfH;//包含时间的格式化对象
- SimpleDateFormat sdfS;//包含毫秒的格式化对象
- String dateFormat = "yyyy年MM月dd日";
- String dateFormatH = "yyyy年MM月dd日 HH时mm分ss秒";
- String dateFormatS = "yyyy年MM月dd日 HH时mm分ss秒 S毫秒";
- //1、创建一个Date类型的变量
- Date currentDate = new Date();
- //2、创建用户格式化的SimpleDateFormat对象
- sdf = new SimpleDateFormat(dateFormat);
- //3、格式化Date对象
- dateString = sdf.format(currentDate);
- //4、输出格式化内容
- System.out.println(dateString);
- sdfH = new SimpleDateFormat(dateFormatH);
- dateString = sdfH.format(currentDate);
- System.out.println(dateString);
- sdfS = new SimpleDateFormat(dateFormatS);
- dateString = sdfS.format(currentDate);
- System.out.println(dateString);
上述代码给出了将一个日期时间对象转化成制定格式的字符串的示例,这里需要强调的是,格式化掩码。我们已经最全面的一个为例
Code:- String dateFormatS = "yyyy年MM月dd日 HH时mm分ss秒 S毫秒";
从这里可以看出 yyyy MM dd HH mm ss S 分别代表不同的组合,比如需要输出结果为 2009/06/01 12:01:03 134 这样的字符串则可以用以下格式的掩码
Code:- String dateFormatS1 = "yyyy/MM/dd HH:mm:ss S";
这里需要着重强调的是:一定能够要严格区分字母大小写,比如表示月份的和小时的掩码必须用大写
在分析格式转换之后我们来研究一下如何获取日期时间变量中的某个部分的值,比如我们只想获取当前的年份。代码如下
Code:- Date currentDate ;
- Calendar calendar;
- int year;
- int month;
- int day;
- int hour12;
- int hour24;
- int min;
- int sec;
- int msec;
- //创建一个Date对象
- currentDate = new Date();
- //创建一个Calendar对象
- calendar = Calendar.getInstance();
- //将Date对象转化为Calendar对象
- calendar.setTime(currentDate);
- year = calendar.get(Calendar.YEAR);//年信息
- month = calendar.get(Calendar.MONTH)+1;//月信息
- day = calendar.get(Calendar.DAY_OF_MONTH);//日信息
- hour12 = calendar.get(Calendar.HOUR);//12小时信息
- hour24 = calendar.get(Calendar.HOUR_OF_DAY);//24小时信息
- min = calendar.get(Calendar.MINUTE);//分钟信息
- sec = calendar.get(Calendar.SECOND);//秒信息
- msec = calendar.get(Calendar.MILLISECOND);//毫秒信息
- System.out.println(year);
- System.out.println(month);
- System.out.println(day);
- System.out.println(hour12+"==="+hour24);
- System.out.println(min);
- System.out.println(sec);
- System.out.println(msec);
上述代码需要注意的是,获取月份信息时需要+1,这是为什么呢,这个问题感兴趣的可以思考一下,上网查找一下资料。
到此为止,java时间系列的第三个专题就介绍完了,大家可以在此基础上进行一些扩展的应用,比如把日期时间根式化的功能封装成一个通用的方法,这样以后在做项目时直接调用即可,虽然这些方法在google都可以找到,但是笔者还是建议各位朋友特别是初学者还是亲自敲一遍代码,然后仔细的调试运行一下。