【问题标题】:Convert integer minutes into String "hh:mm"将整数分钟转换为字符串“hh:mm”
【发布时间】:2012-01-18 19:52:40
【问题描述】:

假设startTime 为“00:00”,我需要将minutes(定义为整数)转换为以下字符串格式“hh:mm”。下面给出的代码是我目前所拥有的,但它不能正常工作。也没有考虑到newTime 应该按照startTime 移动。有没有其他解决办法?

String startTime = "00:00";
int minutes = 120;
double time = minutes/60;
String timeS = Double.toString(time);
String[] hourMin = timeS.split(".");
String h = hourMin[0];
String m = hourMin[1];
String newTime = "";    
newTime.concat(h+":"+m);

【问题讨论】:

  • 使用 JodaTime。它使日期/时间工作真正起作用!
  • 你能举个例子吗?
  • 应该加上homework标签

标签: java time


【解决方案1】:
int minutes = 120;

int h = minutes / 60;
int m = minutes % 60;

String.format("%02d:%02d",h,m); // output : "02:00"
String.format("%d:%d",h,m); // output : "2:0"

【讨论】:

    【解决方案2】:

    给你:

    /*Output: 02:05 */
    public String fromMinutesToHHmm(int minutes) {
        long hours = TimeUnit.MINUTES.toHours(Long.valueOf(minutes));
        long remainMinutes = min - TimeUnit.HOURS.toMinutes(hours);
        return String.format("%02d:%02d", hours, remainMinutes);
    }
    

    Kotlin 版本

    class DateUtils {
    
        companion object {
    
            fun fromMinutesToHHmm(minutes: Int): String {
                val hours = TimeUnit.MINUTES.toHours(minutes.toLong())
                val remainMinutes = minutes - TimeUnit.HOURS.toMinutes(hours)
                return String.format("%02d:%02d", hours, remainMinutes)
            }
    
        }
    
    }
    

    【讨论】:

    • 您甚至可以将其缩短为:String.format("%02d:%02d", hours, remainMinutes);
    • 将字符串转换为分钟stackoverflow.com/questions/8909075/…
    • 如果 min 大于 125,这将不起作用。 TimeUnit.MINUTES.toHours(120) 应该添加最小值。
    【解决方案3】:

    apines 的回答很好,但如果您想在 Android 中删除警告,请添加“Locale”:

    int hours = 3;
    int minutes = 6;
    private static final String TIME_SEPARATOR = ":";
    String.format(Locale.getDefault(), "%02d"+TIME_SEPARATOR+"%02d", hours, minutes);
    

    【讨论】:

      【解决方案4】:
      String startTime = "00:00";
      int minutes = 120;
      int h = minutes / 60 + Integer.parseInt(startTime.substring(0,1));
      int m = minutes % 60 + Integer.parseInt(startTime.substring(3,4));
      String newtime = h+":"+m;
      

      【讨论】:

      • int h = 分钟 /60 + Integer.valueOf(startTime.substring(0,1));
      • 如何获得输出“02:00”?现在是“2:0”。
      • 您可以使用 String.format,例如String.format("%02d", hours).
      • 我在这段代码中发现了一个错误。如果 startTime = "10:00",代码将其转换为 "1" 而不是 "10"。修订?
      • 这段代码完全不正确 - 它不能处理从分钟字段到小时字段的溢出。
      【解决方案5】:

      我最近写了这篇文章,用于将秒转换为小时、分钟和秒;随心所欲地调整它(用冒号替换“s”、“m”、“h”、省略秒等)。

      private static String getFormattedTime(int secs) {
          // int secs = (int) Math.round((double) milliseconds / 1000); // for millisecs arg instead of secs
          if (secs < 60)
              return secs + "s";
          else {
              int mins = (int) secs / 60;
              int remainderSecs = secs - (mins * 60);
              if (mins < 60) {
                  return (mins < 10 ? "0" : "") + mins + "m "
                          + (remainderSecs < 10 ? "0" : "") + remainderSecs + "s";
              }
              else {
                  int hours = (int) mins / 60;
                  int remainderMins = mins - (hours * 60);
                  return (hours < 10 ? "0" : "") + hours + "h "
                          + (remainderMins < 10 ? "0" : "") + remainderMins + "m "
                          + (remainderSecs < 10 ? "0" : "") + remainderSecs + "s";
              }
          }
      }
      

      【讨论】:

        【解决方案6】:
        String startTime = "00:00";
        int minutes = 120;
        
        //--- counting
        int hour = minutes/60;
        minutes=minutes-hours*60;
        String m = Integer.toString(minutes);
        String h = Integer.toString(hours);
        newTime=h+":"+m;
        

        【讨论】:

          【解决方案7】:
          int ALLTIME_IN_MINUTES = 1444
          int hour = ALLTIME_IN_MINUTES /60;
                      int min = ALLTIME_IN_MINUTES %60;
          
          
                      String dateStr = hour+":"+min;
                      SimpleDateFormat curFormater = new SimpleDateFormat("H:m"); 
                      Date dateObj = curFormater.parse(dateStr); 
                      SimpleDateFormat postFormater = new SimpleDateFormat("HH:mm"); 
          
                      String newDateStr = postFormater.format(dateObj); 
          

          结果: 24:04

          【讨论】:

            【解决方案8】:
            int minutes = 129;
            double hoursAndMinutes = (minutes / 60)
                    + (double) minutes % 60 / 100;
            String hoursAndMinutesStr = new DecimalFormat("0.00").format(hoursAndMinutes).replace('.', ':');
            System.out.println(hoursAndMinutesStr);
            

            【讨论】:

            • 虽然从技术上讲结果是正确的(因为 60
            • 另外,请不要添加许多已被接受的正确答案的问题的答案。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-01-28
            • 2020-05-11
            相关资源
            最近更新 更多