A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Faith_Yee 中级黑马   /  2014-9-7 22:21  /  779 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java中日期的处理:
java中在处理时间上,首先是用Date等类生成具体的时间,然后通过格式化日期类来对日期进行格式化处理,以便于
得到我们所期望格式的日期。

SimpleDateFormat format(xx)对xx日期进行格式化处理;
SimpleDateFormat  parse(String)将String转化成日期;

Calendar cal =Calendar.getInstance();
       //当前年
       int year = cal.get(Calendar.YEAR);
       //当前月
       int month = (cal.get(Calendar.MONTH))+1;
       //当前月的第几天:即当前日
       int day_of_month = cal.get(Calendar.DAY_OF_MONTH);
       //当前时:HOUR_OF_DAY-24小时制;HOUR-12小时制
       int hour = cal.get(Calendar.HOUR_OF_DAY);
       //当前分
       int minute = cal.get(Calendar.MINUTE);
       //当前秒
       int second = cal.get(Calendar.SECOND);
       //0-上午;1-下午
       int ampm = cal.get(Calendar.AM_PM);
       //当前年的第几周
       int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);
       //当前月的第几周
       int week_of_month = cal.get(Calendar.WEEK_OF_MONTH);
       //当前年的第几天
       int day_of_year = cal.get(Calendar.DAY_OF_YEAR);

Calendar 与 Date的转换非常简单:
Calendar calendar =Calendar.getInstance();
// 从一个 Calendar 对象中获取 Date 对象
Date date = calendar.getTime();
// 将 Date 对象反应到一个 Calendar 对象中,
// Calendar/GregorianCalendar 没有构造函数可以接受 Date 对象
// 所以我们必需先获得一个实例,然后设置 Date 对象
calendar.setTime(date);

Calendar 的 set() 方法
set(int field, int value) -是用来设置"年/月/日/小时/分钟/秒/微秒"等值
field 的定义在 Calendar 中
set(int year, int month, int day, inthour, int minute, int second) 但没有
set(int year, int month, int day, inthour, int minute, int second, int millisecond) 前面set(int,int,int,int,int,int) 方法不会自动将 MilliSecond 清为0。
另外,月份的起始值为0而不是1,所以要设置八月时,我们用7而不是8。
calendar.set(Calendar.MONTH,7);
另外我们要注意的一点是,Calendar为了性能原因对 set() 方法采取延缓计算的方法。在 JavaDoc中有下面的例子来说明这个问题:
Calendar cal1 =Calendar.getInstance();
cal1.set(2000, 7, 31, 0, 0 , 0); //2000-8-31
cal1.set(Calendar.MONTH, Calendar.SEPTEMBER); //应该是2000-9-31,也就是 2000-10-1
cal1.set(Calendar.DAY_OF_MONTH, 30); //如果 Calendar 转化到2000-10-1,那么现在的结果就该是 2000-10-30
System.out.println(cal1.getTime()); //输出的是2000-9-30,说明Calendar 不是马上就刷新其内部的记录

在 Calendar 的方法中,get() 和 add()会让 Calendar 立刻刷新。Set()的这个特性会给我们的开发带来一些意想不到的结果。我们后面会看到这个问题。
=================================================================
//1年前日期

  java.util.Date myDate=newjava.util.Date();
  long myTime=(myDate.getTime()/1000)-60*60*24*365;
  myDate.setTime(myTime*1000);
  String mDate=formatter.format(myDate);
//明天日期
  myDate=new java.util.Date();
  myTime=(myDate.getTime()/1000)+60*60*24;
  myDate.setTime(myTime*1000);
  mDate=formatter.format(myDate);
//两个时间之间的天数
  SimpleDateFormat myFormatter = newSimpleDateFormat("yyyy-MM-dd");
  java.util.Date date= myFormatter.parse("2003-05-1");
  java.util.Date mydate= myFormatter.parse("1899-12-30");
  long day=(date.getTime()-mydate.getTime())/(24*60*60*1000);
//加半小时
SimpleDateFormat format = newSimpleDateFormat("yyyy-MM-dd hh:mm:ss");
java.util.Date date1 =format.parse("2002-02-28 23:16:00");
longTime=(date1.getTime()/1000)+60*30;
date1.setTime(Time*1000);
Stringmydate1=formatter.format(date1);
//年月周求日期
SimpleDateFormat formatter2 = newSimpleDateFormat("yyyy-MM F E");
java.util.Date date2=formatter2.parse("2003-05 5 星期五");
SimpleDateFormat formatter3 = newSimpleDateFormat("yyyy-MM-dd");
Stringmydate2=formatter3.format(date2);
//求是星期几
mydate=myFormatter.parse("2001-1-1");
SimpleDateFormat formatter4 = newSimpleDateFormat("E");
Stringmydate3=formatter4.format(mydate);
==================================================================

评分

参与人数 1技术分 +1 收起 理由
The_king丶 + 1 赞一个!

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马