【问题标题】:Trying to parse the time试图解析时间
【发布时间】:2014-01-30 12:21:29
【问题描述】:

我有字符串

   String aa="01:30";
   String hh=aa.substring(0,2);
   String mm=aa.substring(3,5);

我正在尝试使用

解析分隔值
int hh=Integer.parseInt(hhs);
int mm=Integer.parseInt(mms);

输出是 1 和 30 我怎样才能得到输出,就像 01 和 30 一样? 在此先感谢

【问题讨论】:

  • 您的字符串变量名称缺少您在解析 int 中引用的 s
  • 什么是hhs和mms?它们没有在任何地方定义。整数不能有前导零,如果你只得到 3,你的子字符串不会为 30 提取正确的数据。如果你想将它显示回,你只需要“1”就知道它是 1 点钟用户只需将其作为与前导“0”连接的字符串编辑:正如@giacomoni 所说,它返回 1 和 30....
  • 我试了你的代码,输出是1和30,不是1和3
  • 嘿,你解决了吗?您能否接受答案或添加正确答案以关闭此问题并将其从未回答列表中删除,谢谢!

标签: java string type-conversion


【解决方案1】:

整数不能存储前导零。如果你得到 3 for mm 虽然这表明你还有另一个问题,因为这应该解决为 30

【讨论】:

  • 任何以 0 开头后跟其他数字的整数文字都是八进制的,如果 OP 试图强制它具有前导零,这将进一步混淆。
【解决方案2】:

说你想要一个整数值你想要一个前导零是矛盾的。数值数据类型只有数值;只有该数字的字符串表示具有前导零。

所以你需要决定……你想要吗:

  • 整数(例如:1)
  • 一个字符串(例如:01)
  • 一个时间(例如:01:30)

通常,如果使用日期时间值,您应该这样对待它们。与其使用臭名昭著的 java.util.Date/Calendar 类,不如使用 Joda-Time 库或 Java 8 中新的 java.time.* 类。

使用 Joda-Time 2.3 的示例代码。

String input = "01:30";
LocalTime localTime = new LocalTime( input );
int hourOfDay = localTime.getHourOfDay();
int minuteOfHour = localTime.getMinuteOfHour();

转储到控制台…

System.out.println( "localTime: " + localTime );
System.out.println( "hourOfDay: " + hourOfDay );
System.out.println( "minuteOfHour: " + minuteOfHour );

运行时……

localTime: 01:30:00.000
hourOfDay: 1
minuteOfHour: 30

【讨论】:

    【解决方案3】:

    你可以随时进行格式化

    喜欢这个

    DecimalFormat df=new DecimalFormat("00");
    System.out.println("HH "+df.format(hh));
    

    这将给出 01 作为输出。

    【讨论】:

      【解决方案4】:
      String aa="01:30";
      
      String hhs=aa.substring(0,2);
      String mms=aa.substring(3,5);
      
      int hh=Integer.parseInt(hhs);
      int mm=Integer.parseInt(mms);
      
      String hh_formatted = String.format(Locale.ENGLISH,"%02d", hh);
      String mm_formatted = String.format(Locale.ENGLISH,"%02d", mm);
      

      仅使用上述方法,您可以获得所需的字符串格式的输出。

      【讨论】:

      【解决方案5】:

      时间特定的事情应该用 Date() 来完成..

              SimpleDateFormat inFormat = new SimpleDateFormat("HH:mm");
          SimpleDateFormat outHourFormat = new SimpleDateFormat("HH");
          SimpleDateFormat outMinFormat = new SimpleDateFormat("mm");
      
          String outHour = null;
          String outMinute = null;
          Date input;
      
          try {
              input = inFormat.parse("03:30");
              outHour = outHourFormat.format(input);
              outMinute = outMinFormat.format(input);
      
          } catch (ParseException e) {
              e.printStackTrace();
          }
      
          // now you got two Strings: outHour & outMinute in correct form.
      

      【讨论】:

      • 顺便说一下 .. 带前导 0 的 int 是不可能的
      猜你喜欢
      • 1970-01-01
      • 2020-01-05
      • 2023-04-04
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 2014-05-15
      • 2018-11-17
      • 1970-01-01
      相关资源
      最近更新 更多