记事贴4:Java中的日期处理真是烂!

我想得到当前日期,然后将当前日期加上某一个整数,得到下一个日期,我今天在测试过程中发现Date类不好用,今天是2005-01-14,我想得到前28天的日期,我写了个方法:
 

//传入一个int的时间,经和当前日期相加或者相减,得到一个新日期
// public static String strToDateByInt(int i, String operator) {
//  long j = 0;
//  long tmp;
//
//  Date d = new Date();
//  
//  tmp = (long)(d.getTime()/24 * 3600 * 1000);
//  
//  if ("-".equals(operator)) {
//   j = d.getTime() -  i * 24 * 3600 * 1000;
//   
//  } else if ("+".equals(operator)) {
//   j = d.getTime() +  i * 24 * 3600 * 1000;
//  }
//  Date a = new Date(j);
//
//  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//
//  //  System.out.println(sdf.format(a));
//  return sdf.format(a);
//
// }

结果当我调用这个方法时候,得到的结果竟然是2005-02-07,而这个数值在25-51之间时结果就不对(感谢认真的测试人员!)。

不得已,我查了些资料,将方法改写如下:
 public static String strToDateByInt(int i, String operator) {
  long j = 0;

  Date d = new Date();
  
//  System.out.println("Y=" + d.getYear() + 1900);
//  System.out.println("M=" + d.getMonth());
//  System.out.println("Day=" + d.getDay());
//  System.out.println("Date=" + d.getDate());
  
  GregorianCalendar gc = new GregorianCalendar();
  gc.setTime(d);
  
  System.out.println(d.getTime());
  
  if ("+".equals(operator)) {
   gc.add(GregorianCalendar.DATE, i);
   
  } else if ("-".equals(operator)) {
   gc.add(GregorianCalendar.DATE, (-i));
  }
  
  Date a = gc.getTime();
  
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
  
  return sdf.format(a);

 }

然后就可以了,其实这样解决也可以,但是让我讨厌的是这么长的类名,感觉有些变态!
而且上面的注释掉的代码//  System.out.println("Day=" + d.getDay()); 打印出来并不是日期中的天,而是星期几!!!!!!!!!!!

感觉Java开发真是挺费劲的,而且随着演化,好像越来越复杂,今天的输入法不好用,就写到这里了!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值