java中的分秒和厘米秒解析
我的时间戳是字符串“2013-01-28 11:01:56.9”。这里提到了56.9秒 .9秒=900毫秒 我们可以说是9分秒或90厘米秒 但是在爪哇java中的分秒和厘米秒解析,java,Java,我的时间戳是字符串“2013-01-28 11:01:56.9”。这里提到了56.9秒 .9秒=900毫秒 我们可以说是9分秒或90厘米秒 但是在爪哇 String string = "2013-01-28 11:01:56.9"; String pattern = "yyyy-MM-dd hh:mm:ss.S"; SimpleDateFormat formatter = new SimpleDateFormat(pattern); Date date = formatter.parse(str
String string = "2013-01-28 11:01:56.9";
String pattern = "yyyy-MM-dd hh:mm:ss.S";
SimpleDateFormat formatter = new SimpleDateFormat(pattern);
Date date = formatter.parse(string);
System.out.println(date.getTime());
输出为:1359388916009
这里9被解析为009毫秒,因为“S”(大写-S)用于毫秒
类似地,如果.95秒以“SS”模式提供并用“SS”模式解析,则它给出的是“095”毫秒而不是“950”毫秒
- 为什么java不提供模式来解析/格式化分秒和厘米秒以使事情变得更简单
- 这样做的正当方式是什么
- 1)没有人知道为什么Java不提供模式来解析/格式化分秒和厘秒。但我个人怀疑,尽管你的案例非常有趣,但这是一个非常特殊的格式化案例
很难想象这样方便的格式样式,当
符号是整数和浮点部分之间的分隔符,而它只是日期部分之间的分隔符时,它将允许区分大小写
2) 关于体面的方式。在我看来,这个简单的预处理应该可以帮助您:
public static String preprocess(String date) {
int pIndex = date.lastIndexOf(".") + 1;
String millis = date.substring(pIndex);
for (int i = millis.length(); i < 3; i++)
millis += "0";
return date.substring(0, pIndex) + millis;
}
公共静态字符串预处理(字符串日期){
int pIndex=日期。最后一个索引为(“.”+1;
字符串millis=日期子字符串(pIndex);
对于(int i=millis.length();i<3;i++)
毫秒+=“0”;
返回日期。子字符串(0,pIndex)+毫秒;
}
UPD:它可以写得更简单:
public static String preprocess(String date) {
String millis = date.substring(date.lastIndexOf(".") + 1);
for (int i = millis.length(); i < 3; i++)
date += "0";
return date;
}
公共静态字符串预处理(字符串日期){
字符串millis=date.substring(date.lastIndexOf(“.”+1);
对于(int i=millis.length();i<3;i++)
日期+=“0”;
返回日期;
}
这是可以接受的,因为它很简单,而且大多数情况下最后都给出了秒数。但是,如果时间戳是以其他模式给出的,例如“hh:mm:ss.S-dd MMM,yyyy”,那么这仍然不是通用的。