java - رقم - حساب الساعات والدقائق



كيفية تحويل الدقائق إلى الساعات والدقائق(hh: mm) في جافا (11)

أحتاج إلى تحويل دقائق إلى ساعات ودقائق في جافا. على سبيل المثال 260 يجب أن يكون 4:20. يمكن لأي شخص أن يساعدني في كيفية تحويله.

https://ffff65535.com


ليرة تركية، والدكتور

Duration.ofMinutes( 260L )
        .toString()

PT4H20M

... أو ...

LocalTime.MIN.plus( 
    Duration.ofMinutes( 260L ) 
).toString()

04:20

Duration

تتضمن فئات java.time زوج من الفئات لتمثيل فترات من الوقت. فئة Duration هي لساعات-دقائق-ثانية ، Period هي لسنوات-أشهر-أيام.

Duration d = Duration.ofMinutes( 260L );

ISO 8601

يحدد معيار ISO 8601 التنسيقات النصية لقيم وقت التاريخ. PnYnMnDTnHnMnS الوقت غير المتصلة بالجدول الزمني ، يكون التنسيق القياسي هو PnYnMnDTnHnMnS . تمثل علامة P البداية ، وتفصل T أيام السنة - الشهر - أيام من الساعات - دقائق - ثوانٍ. لذلك ساعة ونصف هو PT1H30M .

تستخدم فئات java.time تنسيق ISO 8601 بشكل افتراضي لتعديل وإنشاء سلاسل. تستخدم Duration Period Duration Period هذا التنسيق القياسي المعين. لذلك ببساطة اتصل بـ toString .

String output = d.toString(); 

PT4H20M

للتنسيق البديل ، قم بإنشاء السلسلة الخاصة بك في Java 9 والإصدارات الأحدث ( ليس في Java 8) باستخدام Duration::to…Part methods. أو راجع هذا الجواب لاستخدام regex لمعالجة سلسلة تنسيق ISO 8601.

LocalTime

أقترح بشدة استخدام تنسيق ISO 8601 القياسي بدلاً من تنسيق الساعة الغامض والمربك للغاية من 04:20 . ولكن إذا كنت تصر ، يمكنك الحصول على هذا التأثير عن طريق القرصنة مع فئة LocalTime . يعمل هذا إذا كانت مدته لا تزيد عن 24 ساعة.

LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();

04:20

حول java.time

تم java.time إطار java.time داخل Java 8 والإصدارات الأحدث. تحل هذه الطبقات محل الطبقات القديمة للتاريخ القديم المزعجة مثل java.util.Date و Calendar و SimpleDateFormat .

ينصح مشروع java.time Joda-Time ، الموجود حاليًا في وضع الصيانة ، java.time فصول java.time .

لمعرفة المزيد ، راجع Oracle Tutorial . والبحث في للعديد من الأمثلة والتفسيرات. مواصفات JSR 310 .

أين يمكن الحصول على فصول java.time؟

  • Java SE 8 و SE 9 والإصدارات الأحدث
    • مدمج.
    • جزء من واجهة برمجة تطبيقات جافا القياسية مع تطبيق مجمع.
    • يضيف Java 9 بعض الميزات والإصلاحات الثانوية.
  • Java SE 6 and SE 7
    • يتم تحويل جزء كبير من وظيفة java.time مرة أخرى إلى Java 6 & 7 في ThreeTen-Backport .
  • Android
    • ThreeTenABP مشروع ThreeTenABP على تهيئة نظام ThreeTen-Backport (المذكور أعلاه) لنظام Android تحديدًا.
    • انظر كيف تستخدم ThreeTenABP ...

يمتد مشروع ThreeTen-Extra java.time مع فئات إضافية. هذا المشروع هو أرض إثبات للإضافات المستقبلية المحتملة إلى java.time. قد تجد بعض الطبقات المفيدة هنا مثل Interval و YearWeek و YearQuarter more .


(في Kotlin) إذا كنت ستطرح الإجابة في TextView أو شيء ما يمكنك بدلاً من ذلك استخدام مورد سلسلة:

<string name="time">%02d:%02d</string>

ثم يمكنك استخدام مورد السلسلة هذا لتعيين النص في وقت التشغيل باستخدام:

private fun setTime(time: Int) {
    val hour = time / 60
    val min = time % 60
    main_time.text = getString(R.string.time, hour, min)
}

استخدم java.text.SimpleDateFormat لتحويل دقيقة إلى ساعات ودقيقة

SimpleDateFormat sdf = new SimpleDateFormat("mm");

try {
    Date dt = sdf.parse("90");
    sdf = new SimpleDateFormat("HH:mm");
    System.out.println(sdf.format(dt));
} catch (ParseException e) {
    e.printStackTrace();
}

جرب هذا الكود:

import java.util.Scanner;

public class BasicElement {
    public static void main(String[] args){
        Scanner input = new Scanner(System.in);
        int hours;
        System.out.print("Enter the hours to convert:");
        hours =input.nextInt();
        int d=hours/24;
        int m=hours%24;
        System.out.println(d+"days"+" "+m+"hours");     

    }
}


عند إدخال الإدخال في ثوانٍ ، يمكنك التحويل إلى تنسيق hh: mm: ss مثل:

int hours;
int minutes;
int seconds;
int formatHelper;

int input;


//formatHelper maximum value is 24 hours represented in seconds

formatHelper = input % (24*60*60);

//for example let's say format helper is 7500 seconds

hours = formatHelper/60*60;
minutes = formatHelper/60%60;
seconds = formatHelper%60;

//now operations above will give you result = 2hours : 5 minutes : 0 seconds;

لقد استخدمت formatHelper منذ يمكن أن يكون الإدخال أكثر من 86 400 ثانية ، وهو 24 ساعة.

إذا كنت تريد الوقت الإجمالي لإدخالتك ممثلة hh: mm: ss ، فيمكنك فقط تجنب formatHelper.

اتمني ان يكون مفيدا.


كنت نسيت الكلمة في ردك:

int hours = Math.floor(t / 60); 
int minutes = t % 60;

System.out.printf("%d:%02d", hours, minutes);

بدون ذلك ، تكون النتيجة غير صحيحة في حالة شهادات مثل على سبيل المثال:

t = 525
hours = 8.75 

حتى بدون Math.floor لدينا هذه النتيجة: 9h45 بدلاً من 8h45.


يمكن القيام به على هذا النحو

        int totalMinutesInt = Integer.valueOf(totalMinutes.toString());

        int hours = totalMinutesInt / 60;
        int hoursToDisplay = hours;

        if (hours > 12) {
            hoursToDisplay = hoursToDisplay - 12;
        }

        int minutesToDisplay = totalMinutesInt - (hours * 60);

        String minToDisplay = null;
        if(minutesToDisplay == 0 ) minToDisplay = "00";     
        else if( minutesToDisplay < 10 ) minToDisplay = "0" + minutesToDisplay ;
        else minToDisplay = "" + minutesToDisplay ;

        String displayValue = hoursToDisplay + ":" + minToDisplay;

        if (hours < 12)
            displayValue = displayValue + " AM";
        else
            displayValue = displayValue + " PM";

        return displayValue;
    } catch (Exception e) {
        LOGGER.error("Error while converting currency.");
    }
    return totalMinutes.toString();

إذا كان وقتك في متغير يسمى t

int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);

لا يمكن أن يصبح أسهل


import java.util.Scanner;
public class Time{
    public static void main(String[]args){
        int totMins=0;
        int hours=0;
        int mins=0;
    Scanner sc= new Scanner(System.in);
    System.out.println("Enter the time in mins: ");
        totMins= sc.nextInt();
        hours=(int)(totMins/60);
        mins =(int)(totMins%60);
        System.out.printf("%d:%d",hours,mins);
    }
}

long d1Ms=asa.getTime();   
long d2Ms=asa2.getTime();   
long minute = Math.abs((d1Ms-d2Ms)/60000);   
int Hours = (int)minute/60;     
int Minutes = (int)minute%60;     
stUr.setText(Hours+":"+Minutes); 




java