时间戳字符串到java中的时间戳

时间:2015-04-02 14:14:39

标签: java date timestamp

我有以下字符串“2015-04-02 11:52:00 + 02”,我需要用Java将其解析为时间戳。 我尝试了各种格式,包括

SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss+Z");

但似乎没有任何效果 - 我不断收到ParseException

有人可以帮忙吗?

我需要类似的东西:

SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss+Z");


Timestamp t = new Timestamp(mdyFormat.parse("2015-04-02 11:52:00+02").getTime());

4 个答案:

答案 0 :(得分:1)

试试这个

String str="2009-12-31 23:59:59 +0100";
                               /\
                               ||
                      Provide Space while providing timeZone

SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss Z");
System.out.println(mdyFormat.parse(str));

<强>输出

Fri Jan 01 04:29:59 IST 2010

答案 1 :(得分:0)

尝试"yyyy-MM-dd HH:mm:ssX"

Z代表时区,格式如下:+0800

X代表时区,格式如下:+08

示例here

答案 2 :(得分:0)

java.sql.Timestamp对象没有时区 - 它们是时间瞬间,如java.util.Date

所以试试这个:

SimpleDateFormat mdyFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Timestamp t = new Timestamp(mdyFormat.parse("2015-04-02 11:52:00").getTime());

答案 3 :(得分:0)

ISO 8601

使用T替换中间的SPACE,并且您有一个有效的标准(ISO 8601)字符串格式,可以由Joda-Time库或新{{}直接解析3}}内置于Java 8(受Joda-Time启发)。搜索StackOverflow数百个示例。

如果使用java.time,请在解析小时偏移值时阅读关于有关错误的问题的评论。

Joda-Time 2.7中的示例。

String inputRaw = "2015-04-02 11:52:00+02";
String input = inputRaw.replace( " ", "T" );
DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );  // Specify desired time zone adjustment.
DateTime dateTime = new DateTime( input, zone );