Use Calendar

本文提供了将日期类型转换为字符串以及从字符串还原为日期的方法。重点介绍了如何处理年月日的格式化,特别注意月份的加减1操作以确保时间的一致性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转换日期类型为字符串: 
public static String calendarToYMD(Calendar inDate){
     StringBuffer ret = new StringBuffer (8);
     ret.append (inDate.get(Calendar.YEAR));
     if ( inDate.get(Calendar.MONTH)+1<10)
       ret.append('0');
     ret.append ((inDate.get(Calendar.MONTH)+1));
     if (inDate.get(Calendar.DAY_OF_MONTH)<10)
       ret.append ('0');
     ret.append(inDate.get(Calendar.DAY_OF_MONTH));
     return ret.toString();
  }
转换字符串为日期类型:
  public static Calendar YMDToCalendar(String inDate)
      throws Exception{
     Calendar ret = Calendar.getInstance();
     if (inDate.length() < 8)
         throw new Exception ( "Invalid date format '" + inDate + "'" );
     int year = Integer.parseInt(inDate.substring(0,4));
     int month = Integer.parseInt(inDate.substring ( 4, 6 ) );
     int day = Integer.parseInt(inDate.substring ( 6, 8 ) );

     if (day<1||day>31||month<1||month>12)
          throw new Exception ( "Invalid date '" + inDate + "'");

     if (inDate.length()>8 ) {
       if (inDate.charAt(8) == 'T'){
          try {
             int hour = Integer.parseInt ( inDate.substring ( 9, 11 ) );
             int minute = Integer.parseInt ( inDate.substring ( 11, 13 ) );
             int second = Integer.parseInt ( inDate.substring ( 13, 15 ) );
             ret.set ( year, month-1, day, hour, minute, second );//TODO
         } catch ( NumberFormatException nef ) {
             throw new Exception ( "Invalid time in date string '" +inDate+"'");
         }
       } else {

            throw new Exception ( "Invalid date format '" + inDate+"'");
       }
     } else {
        ret.set(year, month-1, day);
     }
     return ret;
   }
在上述的转换过程中需要注意的一个问题是,如果我们把日期转化为了字符串则,MONTH信息需要在初始值的基础上+1
而在相反的过程中,我们则需要-1,只有这样处理后我们在使用cal.getTime()方法返回的时间才能和经过转化的String
对象对应上。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值