【发布时间】:2016-05-02 13:39:41
【问题描述】:
我需要在时间戳中添加分钟并在此之后返回新值。时间戳取自数据库并作为字符串传递给方法,并具有以下模式:yyyy-MM-dd hh:mm:ss.SSSSSS
public static String changeCreditTimeStampMin(String tmStmp, int minutesToAdd) {
tmStmp = tmStmp.substring(0, tmStmp.length() - 3);
try {
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
java.util.Date parsedDate = dateFormat.parse(tmStmp);
java.sql.Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime() + minutesToAdd*60*1000);
tmStmp = timestamp.toString();
} catch (ParseException e) {
e.printStackTrace();
}catch(Exception e){
e.printStackTrace();
}
return tmStmp;
}
如您所见,我的逻辑使用 SimpleDateFormat,为了使用它,我必须对时间戳使用子字符串操作。我的问题,有没有更好的方法可以在不剪切时间戳字符串的情况下获得相同的结果?请注意,我的 java 版本是 1.5,我不能使用更新的版本。
【问题讨论】:
-
看到您将时间戳作为字符串传递,不,您需要解析字符串来修改时间。你真的需要时间戳是一个字符串吗?否则在你的程序中使用它作为一个数字可能会更好,特别是如果你需要对它做更多的操作。
-
您是担心精度损失还是操作顺序?
-
@Oebele 我不需要它作为字符串,但它是我从 DAO 类中得到的,事实上我有许多从结果集中检索为字符串的变量,所以我不去碰它类。
-
@rpy 不,我不关心精度,我可以将返回值传递回数据库查询并将其与具有初始模式的时间戳进行比较,它会正常工作。我只是想知道我是否可以在没有字符串操作(子字符串操作)的情况下使用某些东西,因为它似乎不适合我。
-
我的意思是,如果你需要对时间戳做很多操作,最好将它转换为数字一次,当你从数据库中检索它时,继续使用它作为数字在你的程序中,只有当你再次在查询中使用它时才将其转换回字符串。
标签: java date timestamp java-5