Javaで分を時間と分に変換する必要があります。たとえば、260は4:20である必要があります。誰かがそれを変換する方法を私に助けてもらえますか?
Javaで分を時間と分に変換する必要があります。たとえば、260は4:20である必要があります。誰かがそれを変換する方法を私に助けてもらえますか?
回答:
あなたの時間がと呼ばれる変数にある場合 t
int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);
簡単にはなりませんでした
Durationか?
t可能性がある場合<0、2行目はint minutes = Math.abs(t) % 60;。
Duration.ofMinutes( 260L )
.toString()
PT4H20M
…または…
LocalTime.MIN.plus(
Duration.ofMinutes( 260L )
).toString()
04:20
Durationjava.timeクラスには、期間を表すクラスのペアが含まれています。ザ・Durationクラスは、時間・分・秒であり、Period年月-日間です。
Duration d = Duration.ofMinutes( 260L );
Duration 部品の各部分にアクセスします Duration呼び出してto…Part。これらのメソッドは、Java9以降で追加されました。
long days = d.toDaysPart() ;
int hours = d.toHoursPart() ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
int nanos = d.toNanosPart() ;
次に、それらのパーツから独自のストリングを組み立てることができます。
ISO 8601の標準的な定義は、日付・時刻の値の書式をテキスト形式。タイムラインに接続されていない期間の場合、標準形式はPnYnMnDTnHnMnSです。Pマーク始まり、およびT時間・分・秒から離れる年-月-日。つまり、1時間半はPT1H30Mです。
java.timeクラスは、文字列の解析と生成にデフォルトでISO8601形式を使用します。DurationそしてPeriodクラスは、この特定の標準形式を使用します。したがって、単にを呼び出しますtoString。
String output = d.toString();
PT4H20M
別のフォーマットについては、メソッドを使用してJava 9以降(Java 8ではない)で独自の文字列を作成しますDuration::to…Part。または、正規表現を使用してISO 8601形式の文字列を操作する方法については、この回答を参照してください。
LocalTimeの非常にあいまいで紛らわしいクロック形式の代わりに、標準のISO8601形式を使用することを強くお勧めします04:20。しかし、あなたが主張するならば、あなたはLocalTimeクラスでハッキングすることによってこの効果を得ることができます。これは、期間が24時間を超えていない場合に機能します。
LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();
04:20
java.timeフレームワークは、Java8以降に組み込まれています。これらのクラスは面倒古い取って代わるレガシーのような日付時刻クラスをjava.util.Date、Calendar、& SimpleDateFormat。
ジョダタイムプロジェクトは、今でメンテナンスモードへの移行をアドバイスjava.timeのクラス。
詳細については、Oracleチュートリアルを参照してください。そして、StackOverflowで多くの例と説明を検索してください。仕様はJSR310です。
java.timeクラスはどこで入手できますか?
ThreeTen-エクストラプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、java.timeへの将来の追加の可能性の証明の場です。あなたはここにいくつかの有用なクラスのような見つけることがInterval、YearWeek、YearQuarter、および多くを。
Duration::to…Part私の編集で示されたメソッドをこの回答にもたらしました。それらのパーツから自分の弦を簡単に組み立てることができます。
TimeUnitクラスを使用することもできます。あなたは定義することができます
private static final String FORMAT = "%02d:%02d:%02d";次のようなメソッドを持つことができます:
public static String parseTime(longミリ秒){
String.format(FORMAT、
TimeUnit.MILLISECONDS.toHours(milliseconds)、
TimeUnit.MILLISECONDS.toMinutes(milliseconds)-TimeUnit.HOURS.toMinutes(
TimeUnit.MILLISECONDS.toHours(milliseconds))、
TimeUnit.MILLISECONDS.toSeconds(milliseconds)-TimeUnit.MINUTES.toSeconds(
TimeUnit.MILLISECONDS.toMinutes(milliseconds)));
}
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();
}
このようにすることができます
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();
私は自分のプロジェクトにこの関数を使用しています:
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;
}
ここで変換aの私の関数である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
お役に立てば幸いです
Minutes mod 60は、残り分で時間を示します。
このコードを試してください:
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;
入力が86400秒(24時間)を超える可能性があるため、formatHelperを使用しました。
入力の合計時間をhh:mm:ssで表す場合は、formatHelperを回避できます。
お役に立てば幸いです。
inputが7500の場合、結果は7500時間、5分、0秒になりますが、これは明らかに間違っています。そして、質問は秒についてはまったく言及していませんでした。
int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +mHours, "" +mMinutes);
%dフォーマット文字列値に"" +mHoursして"" +mMinutes?
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);
}
}