在java中以yyyyMMddHHmmss格式添加30秒的时间

时间:2018-02-24 08:15:06

标签: java date simpledateformat

如何以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

4 个答案:

答案 0 :(得分:2)

TL;博士

LocalDateTime.parse( 
    "20180123123456" , 
    DateTimeFormatter.ofPattern( “uuuuMMddHHmmss” ) 
).plusSeconds( 5 ) 

java.time

使用现代 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.time框架内置于Java 8及更高版本中。这些类取代了麻烦的旧legacy日期时间类,例如java.util.DateCalendar和& SimpleDateFormat

现在位于Joda-Timemaintenance 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的试验场。您可以在此处找到一些有用的课程,例如IntervalYearWeekYearQuartermore

答案 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);