Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中的分秒和厘米秒解析_Java - Fatal编程技术网

java中的分秒和厘米秒解析

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

我的时间戳是字符串“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(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”,那么这仍然不是通用的。