我有以下字符串“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());
答案 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)
答案 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)
使用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 );