timestamp String date 三者之间的转换,以及DB中的判断 转换时候的注意事项

来源:互联网 发布:文字编辑软件 编辑:程序博客网 时间:2024/06/01 13:03


"yyyy-MM-dd"   不要写成“yyyy-mm-dd”,一定要注意mm要大写,否则你check的时候是出不来错误的。

由此可见ToString("yyyymmdd")得到的并不是当前时间的年月日,而又由于 "年月日时分秒"是"yyyy MM dd HH mm ss"联想到有可能将ToString("yyyymmdd");其中的"mm"当做分钟处理了,

所以实际得到的是"年分天"的结果.于是边做再次的验证,结果的确如此

也就是说

string a= DateTime.Now.ToString("yyyyMMdd") ;//得到的是"年月日"的结果
string b=DateTime.Now.ToString("yyyymmdd"); //得到的是"年分日"的结果


DateFormat format=new SimpleDateFormat("yyyy-MM-dd");


try {
    format.parse("2012-09-01");//成功
    format.parse("2012-09-32");//成功

    // 重要哦

    format.setLenient(false);
    format.parse("2012-09-32");//Exception
} catch (ParseException e) {
    //失敗時の処理…
}
SimpleDateFormatはデフォルトでは書式フォーマットのみをチェックするので、32日のような不正値で例外が投げられない。
不正な日付をチェックしたい場合は、setLenientでfalseをセットする。


Commons DateUtils
commons-langに含まれているDateUtilsを使う場合は以下のように。


try {
    DateUtils.parseDateStrictly("2012-09-01", new String[] {"yyyy-MM-dd"});
    DateUtils.parseDateStrictly("2012-09-32", new String[] {"yyyy-MM-dd"});//Exception
} catch (ParseException e) {
    // エラー処理...
}
これも内部的にはSimpleDateFormatを使った実装。こちらは書式フォーマットをString配列で複数指定できるようになっている。

标题中的三者的转换关系  看是不是日期类型的。格式和 日期是否正确

protected void checkDate(String obj, String msgParam) {

    if (StringUtils.isEmpty(obj)) {
      return;
    }
    try {
      SimpleDateFormat dateFormatter = new SimpleDateFormat("yyyy/mm/dd");
      // 格式と日付正常かとうか、

       // 上文提到的,如果要验证日期是否正确,就要设定这个东西

      //   如果不加这个设定 那么就是单纯的格式验证了,2017/55/66 不会报错
      dateFormatter.setLenient(false);
      dateFormatter.parse(obj);
    } catch (Exception e) {
      throw new ParameterIllegalException(
          messageService.getStatusMessage(StatusCode.E00002, msgParam));
    }
  }


在谈 三者之间的转换,以及DB中的判断

public static String toStr(final Date date) {
    return toStr(date, "yyyy/MM/dd");
  }

public static String toStr(final Date date, final String format) {
    return new SimpleDateFormat(format).format(date);
 }

public static Date toDate(final String dateStr) {

    return toDate(dateStr, "yyyy/MM/dd");
  }
 
  public static Date toDate(final String dateStr, final String format) {
    Date date = null;
    try {
      date = new SimpleDateFormat(format).parse(dateStr);
    } catch (ParseException ex) {
      ex.printStackTrace();
    }
    return date;
  }

格式可以自己更换。

new Timestamp(toDate(“String类型的时间”).getTime())

转换成date,在gettime   这就是一个long的数字了。然后在new timestamp.后面就是0

例如,2012/02/03   转换成timestamp  就是  2012-02-02 00:00;00.0

所以日期的判断 如果要是   终了日  这种的判断 ,日期记得加一天,要不然数据会不正确的。

所有 可以使用 工具类 DateUtils 里面的addday()

Date dateEnd = StringUtils.toDate("2012/12/12");
      dateEnd = DateUtils.addDays(dateEnd, 1);

日期加一天,在转换new Timestamp(dateEnd.getTime())


DB中日期的判断的方式是

date >=開始日  and      date < 終了日

比较正确。  


0 0
原创粉丝点击