我试图将ISO 8601格式的字符串转换为java.util.Date.
yyyy-MM-dd'T'HH:mm:ssZ如果与Locale(比较样本)一起使用,我发现该模式符合ISO8601标准.
但是,使用java.text.SimpleDateFormat,我无法转换格式正确的String 2010-01-01T12:00:00+01:00.我必须先将它转换为2010-01-01T12:00:00+0100没有冒号的.
那么,目前的解决方案是
SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.GERMANY);
String date = "2010-01-01T12:00:00+01:00".replaceAll("\\+0([0-9]){1}\\:00", "+0$100");
System.out.println(ISO8601DATEFORMAT.parse(date));
Run Code Online (Sandbox Code Playgroud)
这显然不是那么好.我错过了什么或者有更好的解决方案吗?
回答
感谢JuanZe的评论,我发现了Joda-Time魔术,这里也有描述.
所以,解决方案是
DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
String jtdate = "2010-01-01T12:00:00+01:00";
System.out.println(parser2.parseDateTime(jtdate));
Run Code Online (Sandbox Code Playgroud)
或者更简单地说,通过构造函数使用默认解析器:
DateTime dt = new DateTime( "2010-01-01T12:00:00+01:00" ) ;
Run Code Online (Sandbox Code Playgroud)
对我来说,这很好.
我想记录System.currentTimeMillis()用户在我的程序中开始使用时的时间.当他完成后,我会减去当前System.currentTimeMillis()从start变量,我想向他们展示使用人类可读的格式经过诸如"XX小时XX分钟,XX秒",甚至是"XX分钟,XX秒",因为它的时间一个小时不太可能带人
最好的方法是什么?
我String代表一个约会.
String date_s = "2011-01-18 00:00:00.0";
Run Code Online (Sandbox Code Playgroud)
我想将它转换为a Date并以YYYY-MM-DD格式输出.
2011-01-18
我怎样才能做到这一点?
好的,根据我在下面找到的答案,这是我尝试过的东西:
String date_s = " 2011-01-18 00:00:00.0";
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date date = dt.parse(date_s);
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));
Run Code Online (Sandbox Code Playgroud)
但它输出02011-00-1而不是所需2011-01-18.我究竟做错了什么?
我试图使用java.util.Date输入,然后用它创建一个查询 - 所以我需要一个java.sql.Date.
我很惊讶地发现它无法隐式或显式地进行转换 - 但我甚至不知道如何做到这一点,因为Java API对我来说仍然是一个新手.
我java.util.Date在Scala中使用Java的类,想要比较一个Date对象和当前时间.我知道我可以使用getTime()来计算delta:
(new java.util.Date()).getTime() - oldDate.getTime()
Run Code Online (Sandbox Code Playgroud)
但是,这只留下了一个long代表毫秒.是否有更简单,更好的方式来获得时间增量?
我想将java.util.Date对象转换为StringJava中的对象.
格式是 2010-05-30 22:15:52
如何比较Java之间的日期?
例:
date1是22-02-2010
date2,07-04-2010今天
是date325-12-2010
date3总是大于date1而且date2永远是今天.如何验证今天的日期是否在date1和date3之间?
有人可以建议当前的"最佳实践" Date和Calendar类型.
当编写新的代码,它是最好的总是青睐Calendar过Date,还是有地方的情况Date是比较合适的数据类型?
java ×9
date ×8
time ×3
datetime ×2
formatting ×2
android ×1
calendar ×1
comparison ×1
date-format ×1
iso8601 ×1
sql ×1
string ×1
timedelta ×1