如何以java格式yyyyMMddHHmmss
格式在日期时间添加30秒
到目前为止我已经完成了这个
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
Date d;
d = df.parse(requestDate);
System.out.println(" date d "+d);
Long time = d.getTime();
time +=30;
Date d2 = new Date(time);
System.out.println(" date d2 "+d2);
我得到的输出不正确,两者都是同一时间。我得到的输出是
date d Wed Apr 30 19:32:47 IST 2014
date d2 Wed Apr 30 19:32:47 IST 2014
答案 0 :(得分:2)
LocalDateTime.parse(
"20180123123456" ,
DateTimeFormatter.ofPattern( “uuuuMMddHHmmss” )
).plusSeconds( 5 )
使用现代 java.time 类而不是可怕的旧遗留类。
解析为LocalDateTime
,因为您的输入显然缺少任何偏移或时区指示。
DateTimeFormatter f = DateTimeFormatter.ofPattern( “uuuuMMddHHmmss” ) ;
LocalDateTime ldt = LocalDateTime.parse( “20180123123456” , f ) ;
Duration d = Duration.ofSeconds( 30 ) ; // Represent a span of time unattached to the timeline.
LocalDateTime later = ldt.plus( d ) ;
String output = later.format( f ) ; // Generate a String representing the value of this object.
提示:请改用ISO 8601标准格式。
搜索Stack Overflow以获取更多信息。这已经被覆盖过很多次了。
java.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.Date
,Calendar
和& SimpleDateFormat
现在位于Joda-Time的maintenance mode项目建议迁移到java.time类。
要了解详情,请参阅Oracle Tutorial。并搜索Stack Overflow以获取许多示例和解释。规范是JSR 310。
使用符合JDBC driver或更高版本的JDBC 4.2,您可以直接与数据库交换 java.time 对象。不需要字符串也不需要java.sql。* classes。
从哪里获取java.time类?
ThreeTen-Extra项目使用其他类扩展java.time。该项目是未来可能添加到java.time的试验场。您可以在此处找到一些有用的课程,例如Interval
,YearWeek
,YearQuarter
和more。
答案 1 :(得分:1)
你有正确的想法,但犯了一个小错误。 //use lock to synchronize access to
//property TestVar
lock (obj)
{
MyTest.TestVar = Convert.ToInt32(MyTest.TestVar) + 1;
}
以毫秒为单位给出时间,而不是秒。所以你需要添加30000。
答案 2 :(得分:0)
您需要添加30000毫秒(30秒),其中1000毫秒表示1秒
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
Date d;
d = df.parse(requestDate);
System.out.println(" date d "+d);
Long time = d.getTime();
time +=30000;//Here Change
Date d2 = new Date(time);
System.out.println(" date d2 "+d2);
答案 3 :(得分:0)
请阅读Date.getTime()doc:返回毫秒数...
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
Date d;
d = df.parse(requestDate);
System.out.println(" date d "+d);
Long time = d.getTime();
time +=30000; //<---milliseconds
Date d2 = new Date(time);
System.out.println(" date d2 "+d2);