我需要在时间戳中添加分钟并在此之后返回新值。时间戳取自数据库并作为String传递给方法,并具有以下模式:yyyy-MM-dd hh:mm:ss.SSSSSS
{{1}}
正如您所看到的,我的逻辑使用SimpleDateFormat,为了使用它我必须在时间戳上使用子字符串操作。我的问题是,有没有更好的方法可以在不削减时间戳字符串的情况下获得相同的结果?请注意我的java版本是1.5,我不能使用更新的版本。
答案 0 :(得分:0)
问题在于你使用的是mm。你应该使用MM。 MM是月份,mm是分钟。试试yyyy-MM-dd HH:mm
其他方法:
static final long ONE_MINUTE_IN_MILLIS=60000;//millisecs
Calendar date = Calendar.getInstance();
long t=date.getTimeInMillis();
Date afterAddingTenMins=new Date(t + (10 *ONE_MINUTE_IN_MILLIS));
答案 1 :(得分:0)
更好的方法?
是的,使用java.time类而不是旧的旧日期时类。
通过用T
替换中间的空格,将字符串输入更改为标准ISO 8601格式。我假设此字符串旨在表示UTC中的时刻。所以,附上一个Z
,简称Zulu,意思是UTC。
在解析/生成字符串表示时,java.time类默认使用ISO 8601格式。因此,直接提供给解析方法,而无需定义格式化模式。 Instant
代表UTC时间轴上的一个时刻,结果为纳秒。
Instant instant = Instant.parse( input );
添加分钟。如果您想在UTC中使用此功能,那么您不必关心处理时区和夏令时(DST)等异常情况,请使用此Instant
创建另一个。否则应用w时区来获得ZonedDateTime
。
long minutes = 5L;
Instant later = instant.plus( minutes , ChronoUnit.MINUTES );
提示:在应用中传递这些Instant
个对象而不是字符串。