java时间段年份_设置java日期的年份

我正在尝试设置java.util.Date的年份.

我需要解析的时间戳不包括年份所以我这样做了:

private static final SimpleDateFormat logTimeStampFormat =

new SimpleDateFormat("MMM dd HH:mm:ss.SSS");

boolean isAfterRefDate (String line, Date refDate) {

try {

Date logTimeStamp = logTimeStampFormat.parse(line);

logTimeStamp.setYear(2012); // But this is deprecated!

return logTimeStamp.after(refDate);

} catch (ParseException e) {

// Handle exception

}

}

为了避免使用弃用的方法,我喜欢这样:

private static final SimpleDateFormat logTimeStampFormat =

new SimpleDateFormat("MMM dd HH:mm:ss.SSS");

private static Calendar cal = Calendar.getInstance();

boolean isAfterRefDate (String line, Date refDate) {

try {

Date logTimeStamp = logTimeStampFormat.parse(line);

cal.setTime(logTimeStamp);

cal.set(Calendar.YEAR, 2012);

logTimeStamp = cal.getTime();

return logTimeStamp.after(refDate);

} catch (ParseException e) {

// Handle exception

}

}

我只是不认为这是解决这个问题的最佳方法.我必须先正确设置日历对象,然后从中获取日期对象,而早些时候我可以直接修改日期对象.

有人可以提出更好的方法吗?

解决方法:

Can someone suggest a better approach.

当然 – 尽量避免首先使用日期和日历.使用Joda Time代替,这要好得多.

在日期上设置年份本质上是模棱两可的操作 – 今年的时区是什么意思?如果您在2012年2月29日的前一天设定2013年,您会发生什么?

使用Joda Time将使您的代码在您真正期望的数据类型方面更加清晰.如果确实需要,您始终可以在API边界转换为日期和日历.

标签:java,date,calendar

来源: https://codeday.me/bug/20190530/1182051.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值