जावा में मिनटों को घंटे और मिनटों में कैसे बदलें (hh: mm)


81

मुझे जावा में मिनटों को घंटों और मिनटों में बदलना होगा। उदाहरण के लिए 260 को 4:20 होना चाहिए। क्या कोई मेरी मदद कर सकता है कि मैं इसे कैसे करूं।


24 घंटे का समय या 12 घंटे का समय सुबह और शाम के साथ?
खाना_आ_लेमन

यह भी देखें stackoverflow.com/questions/2704473
trashgod

जवाबों:


193

यदि आपका समय नामक चर में है t

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

यह आसान नहीं हो सकता


क्या जावा 8 के साथ इसे प्राप्त करने का कोई तरीका है Duration?
इगोरगानापल्स्की

3
यदि (नकारात्मक) tहो सकता है <0तो दूसरी पंक्ति होनी चाहिए int minutes = Math.abs(t) % 60;
विटिच

1
और यह भी कि अगर आप समय के साथ या दोपहर चाहते हैं तो इस शर्त को जोड़ दें स्ट्रिंग amOrPm; if (timeInminutes> = 720) amOrPm = "PM"; वरना amOrPm = "AM"; स्ट्रिंग परिवर्तित समय = घंटे + ":" + मिनट + amOrPm;
SFAH

गैर-एएम / पीएम स्थानों के साथ क्या करना है? यह केवल आंशिक, गैर स्थानीयकृत समाधान है।
रोर

29

tl; डॉ

Duration.ofMinutes( 260L )
        .toString()

PT4H20M

… या…

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

4:20

Duration

Java.time कक्षाओं में समय की अवधि का प्रतिनिधित्व करने के लिए कक्षाओं की एक जोड़ी शामिल है। Durationकक्षा घंटों-मिनट-सेकंड के लिए है, और Periodसाल-महीने-दिनों के लिए है।

Duration d = Duration.ofMinutes( 260L );

Duration पार्ट्स

Durationकॉल करके प्रत्येक भाग तक पहुँचें to…Part। ये तरीके जावा 9 और बाद में जोड़े गए थे।

long days = d.toDaysPart() ;
int hours = d.toHoursPart() ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
int nanos = d.toNanosPart() ;

फिर आप उन हिस्सों से अपनी खुद की स्ट्रिंग को इकट्ठा कर सकते हैं।

आईएसओ 8601

आईएसओ 8601 मानक परिभाषित तिथि-समय मूल्यों के लिए प्रारूपों शाब्दिक। समय के अंतराल के लिए, समयरेखा के लिए अनासक्त, मानक प्रारूप है PnYnMnDTnHnMnSPअंक शुरुआत है, और Tअलग घंटे-मिनट-सेकंड से साल महीने दिनों। तो एक घंटा और एक आधा है PT1H30M

Java.time कक्षाएं आईएसओ 8601 फॉर्मेट का उपयोग डिफ़ॉल्ट रूप से पार्सिंग और जेनरेटिंग स्ट्रिंग्स के लिए करती हैं। Durationऔर Periodकक्षाएं इस विशेष मानक प्रारूप का उपयोग करें। तो बस बुलाओ toString

String output = d.toString(); 

PT4H20M

वैकल्पिक स्वरूपण के लिए, अपने स्वयं के स्ट्रिंग का निर्माण जावा 9 और बाद में ( जावा 8 में नहीं ) Duration::to…Partविधियों के साथ करें । या आईएसओ 8601 स्वरूपित स्ट्रिंग में हेरफेर करने के लिए रेगेक्स का उपयोग करने के लिए यह उत्तर देखें ।

LocalTime

मैं दृढ़ता से बेहद अस्पष्ट और भ्रामक घड़ी प्रारूप के बजाय मानक आईएसओ 8601 प्रारूप का उपयोग करने का सुझाव देता हूं 04:20। लेकिन अगर आप जोर देते हैं, तो आप LocalTimeकक्षा के साथ हैक करके इस प्रभाव को प्राप्त कर सकते हैं । यह काम करता है यदि आपकी अवधि 24 घंटे से अधिक नहीं है।

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

4:20


जावा के बारे में

Java.time ढांचे जावा 8 और बाद में बनाया गया है। इन कक्षाओं परेशानी वर्ष प्रतिस्थापित विरासत जैसे तिथि-समय कक्षाएं java.util.Date, Calendar, और SimpleDateFormat

Joda समय परियोजना, अब में रखरखाव मोड , प्रवास करने की सलाह देता java.time कक्षाएं।

अधिक जानने के लिए, Oracle ट्यूटोरियल देखें । और कई उदाहरणों और स्पष्टीकरणों के लिए ढेर अतिप्रवाह खोजें। विशिष्टता JSR 310 है

Java.time कक्षाएं कहाँ से प्राप्त करें?

ThreeTen-अतिरिक्त परियोजना अतिरिक्त कक्षाओं के साथ java.time फैली हुई है। यह परियोजना java.time के लिए भविष्य के संभावित अतिरिक्त के लिए एक साबित जमीन है। आप यहाँ कुछ उपयोगी वर्गों जैसे मिल सकता है Interval, YearWeek, YearQuarter, और अधिक


1
अच्छा, मैं कुछ इस तरह की तलाश में हूं, लेकिन मैं "PT4H20M" या "04:20" के बजाय "4h 20 मीटर" या "4h 20min" के रूप में परिणाम प्राप्त करना चाहूंगा। मुझे लगता है कि मुझे किसी प्रकार की प्रारूपण विधि का उपयोग करना होगा?
एडित्सू ने छोड़ दिया क्योंकि एसई ईवीआईएल

@aditsuquitbecauseSEisEVIL जावा 9 ने Duration::to…Partइस उत्तर में मेरे संपादन के तरीकों को दिखाया। आप आसानी से उन हिस्सों से अपनी खुद की स्ट्रिंग को इकट्ठा कर सकते हैं।
तुलसी बॉर्क

11

आप TimeUnit वर्ग का भी उपयोग कर सकते हैं । आप परिभाषित कर सकते हैं

निजी स्थिर अंतिम स्ट्रिंग FORMAT = "% 02d:% 02d:% 02d";
एक विधि की तरह हो सकता है:

सार्वजनिक स्थैतिक स्ट्रिंग पार्सटाइम (लंबी मिलीसेकंड) {
      वापसी String.format (FORMAT,
              TimeUnit.MILLISECONDS.toHours (मिलीसेकंड),
              TimeUnit.MILLISECONDS.toMinutes (मिलीसेकंड) - TimeUnit.HOURS.toMinutes (
              TimeUnit.MILLISECONDS.toHours (मिलीसेकंड)),
              TimeUnit.MILLISECONDS.toSeconds (मिलीसेकंड) - TimeUnit.MINUTES.toSeconds (
              TimeUnit.MILLISECONDS.toMinutes (मिलीसेकंड));
   }

मुझे पता है कि स्वीकृत उत्तर में कोड की तुलना में यह थोड़ा लंबा है, लेकिन IMHO यह भी स्पष्ट है। यह मेरे लिए ज़्यादा प्रधान है।
ओले वीवी

11

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();
}

2

इसे इस तरह किया जा सकता है

        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();


1
इसका मुद्रा से क्या लेना-देना है?
fdermishin

2

(कोटलिन में) यदि आप उत्तर को 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)
}

1

मैं अपनी परियोजनाओं के लिए इस फ़ंक्शन का उपयोग करता हूं:

 public static String minuteToTime(int minute) {
    int hour = minute / 60;
    minute %= 60;
    String p = "AM";
    if (hour >= 12) {
        hour %= 12;
        p = "PM";
    }
    if (hour == 0) {
        hour = 12;
    }
    return (hour < 10 ? "0" + hour : hour) + ":" + (minute < 10 ? "0" + minute : minute) + " " + p;
}

1

यहाँ परिवर्तित एक के लिए मेरे समारोह है second, millisecondकरने के लिएday,hour,minute,second

public static String millisecondToFullTime(long millisecond) {
    return timeUnitToFullTime(millisecond, TimeUnit.MILLISECONDS);
}

public static String secondToFullTime(long second) {
    return timeUnitToFullTime(second, TimeUnit.SECONDS);
}

public static String timeUnitToFullTime(long time, TimeUnit timeUnit) {
    long day = timeUnit.toDays(time);
    long hour = timeUnit.toHours(time) % 24;
    long minute = timeUnit.toMinutes(time) % 60;
    long second = timeUnit.toSeconds(time) % 60;
    if (day > 0) {
        return String.format("%dday %02d:%02d:%02d", day, hour, minute, second);
    } else if (hour > 0) {
        return String.format("%d:%02d:%02d", hour, minute, second);
    } else if (minute > 0) {
        return String.format("%d:%02d", minute, second);
    } else {
        return String.format("%02d", second);
    }
}

परिक्षण

public static void main(String[] args) {
    System.out.println("60 => " + secondToFullTime(60));
    System.out.println("101 => " + secondToFullTime(101));
    System.out.println("601 => " + secondToFullTime(601));
    System.out.println("7601 => " + secondToFullTime(7601));
    System.out.println("36001 => " + secondToFullTime(36001));
    System.out.println("86401 => " + secondToFullTime(86401));
}

उत्पादन

60 => 1:00
101 => 1:41
601 => 10:01
7601 => 2:06:41
36001 => 10:00:01
86401 => 1day 00:00:01

आशा है कि यह मदद करेगा


-1

मिनट 60 mod मिनट शेष के साथ घंटे देता है।

http://www.cafeaulait.org/course/week2/15.html


वास्तव में यह विपरीत है, मिनट मॉड 60 आपको मिनट देगा। मेरा जवाब देखें
Federico klez Culloca

आप बिल्कुल सही हैं। यह देर से यहाँ है, स्पष्ट करने के लिए धन्यवाद!
रायरे

-1
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); 

दो से ऊपर प्रेसीडेंसी नंबर
डेवलपर

-1

इस कोड को आज़माएं:

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");     

    }
}

2
यह मिनटों से लेकर मिनटों तक था
कीसर

-1

दिए गए इनपुट को सेकंड में देखते हुए आप 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;

मैंने प्रारूप हेल्पर का उपयोग किया है क्योंकि इनपुट अधिक हो सकता है फिर 86 400 सेकंड, जो कि 24 घंटे है।

यदि आप hh: mm: ss द्वारा दर्शाए गए अपने इनपुट का कुल समय चाहते हैं, तो आप प्रारूप से बच सकते हैं।

मुझे उम्मीद है यह मदद करेगा।


1
काम नहीं करता है। यदि input7500 है, तो परिणाम 7500 घंटे, 5 मिनट और 0 सेकंड है, जो स्पष्ट रूप से गलत है। और इस सवाल में कुछ सेकंड का जिक्र नहीं था।
fdermishin


-1
int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +mHours, "" +mMinutes);

1
आप %dस्ट्रिंग मानों को स्वरूपित करने के लिए पूर्णांक प्रारूप का उपयोग क्यों कर रहे हैं "" +mHoursऔर "" +mMinutes?
fdermishin

-1
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);
    }
}

यह स्वीकृत उत्तर से कैसे भिन्न है?
fdermishin 12
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.