Tôi cần chuyển đổi phút thành giờ và phút trong java. Ví dụ 260 phải là 4:20. bất cứ ai có thể giúp tôi làm thế nào để chuyển đổi nó.
Tôi cần chuyển đổi phút thành giờ và phút trong java. Ví dụ 260 phải là 4:20. bất cứ ai có thể giúp tôi làm thế nào để chuyển đổi nó.
Câu trả lời:
Nếu thời gian của bạn nằm trong một biến được gọi là t
int hours = t / 60; //since both are ints, you get an int
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);
Nó không thể dễ dàng hơn
Durationkhông?
tcó thể là <0(âm) thì dòng thứ hai phải là int minutes = Math.abs(t) % 60;.
Duration.ofMinutes( 260L )
.toString()
PT4H20M
… hoặc là …
LocalTime.MIN.plus(
Duration.ofMinutes( 260L )
).toString()
04:20
DurationCác lớp java.time bao gồm một cặp lớp để đại diện cho các khoảng thời gian. Các Durationlớp học là hàng giờ-phút-giây, và Periodlà trong nhiều năm-tháng-ngày.
Duration d = Duration.ofMinutes( 260L );
Duration các bộ phậnTruy cập từng phần của Durationbằng cách gọi to…Part. Các phương thức này đã được thêm vào trong Java 9 trở lên.
long days = d.toDaysPart() ;
int hours = d.toHoursPart() ;
int minutes = d.toMinutesPart() ;
int seconds = d.toSecondsPart() ;
int nanos = d.toNanosPart() ;
Sau đó, bạn có thể lắp ráp chuỗi của riêng bạn từ những phần đó.
Các tiêu chuẩn ISO 8601 định nghĩa tiêu chuẩn văn bản định dạng cho giá trị ngày thời gian. Đối với các khoảng thời gian không gắn liền với dòng thời gian, định dạng tiêu chuẩn là PnYnMnDTnHnMnS. Các Pdấu hiệu đánh dấu sự bắt đầu và Tphân tách năm-tháng-ngày với giờ-phút-giây. Vì vậy, một giờ rưỡi là PT1H30M.
Các lớp java.time sử dụng các định dạng ISO 8601 theo mặc định để phân tích cú pháp và tạo chuỗi. Các Durationvà Periodcác lớp sử dụng định dạng tiêu chuẩn cụ thể này. Vì vậy, chỉ cần gọi toString.
String output = d.toString();
PT4H20M
Để định dạng thay thế, hãy xây dựng Chuỗi của riêng bạn trong Java 9 trở lên ( không phải trong Java 8) bằng các Duration::to…Partphương pháp. Hoặc xem Câu trả lời này để sử dụng regex để thao tác với chuỗi được định dạng ISO 8601.
LocalTimeTôi thực sự khuyên bạn nên sử dụng định dạng ISO 8601 tiêu chuẩn thay vì định dạng đồng hồ cực kỳ mơ hồ và khó hiểu của 04:20. Nhưng nếu bạn nhấn mạnh, bạn có thể nhận được hiệu ứng này bằng cách hack với LocalTimelớp. Điều này hoạt động nếu thời lượng của bạn không quá 24 giờ.
LocalTime hackUseOfClockAsDuration = LocalTime.MIN.plus( d );
String output = hackUseOfClockAsDuration.toString();
04:20
Các java.time khung được xây dựng vào Java 8 và sau đó. Những lớp học thay thế cái cũ phiền hà di sản lớp học ngày thời gian như java.util.Date, Calendar, & SimpleDateFormat.
Các Joda thời gian dự án, bây giờ trong chế độ bảo trì , khuyên chuyển đổi sang các java.time lớp.
Để tìm hiểu thêm, hãy xem Hướng dẫn Oracle . Và tìm kiếm Stack Overflow cho nhiều ví dụ và giải thích. Đặc điểm kỹ thuật là JSR 310 .
Lấy các lớp java.time ở đâu?
Các ThreeTen-Extra dự án mở rộng java.time với các lớp bổ sung. Dự án này là cơ sở chứng minh cho những bổ sung có thể có trong tương lai cho java.time. Bạn có thể tìm thấy một số các lớp học hữu ích ở đây chẳng hạn như Interval, YearWeek, YearQuarter, và nhiều hơn nữa .
Duration::to…Partphương pháp hiển thị các chỉnh sửa của tôi cho Câu trả lời này. Bạn có thể dễ dàng lắp ráp chuỗi của riêng bạn từ các bộ phận đó.
Bạn cũng có thể sử dụng lớp TimeUnit . Bạn có thể xác định
private static final String FORMAT = "% 02d:% 02d:% 02d";có thể có một phương pháp như:
public static String parseTime (mili giây dài) {
return String.format (ĐỊNH DẠNG,
TimeUnit.MILLISECONDS.đếnHours (mili giây),
TimeUnit.MILLISECONDS.toMinutes (mili giây) - TimeUnit.HOURS.toMinutes (
TimeUnit.MILLISECONDS. đếnHours (mili giây)),
TimeUnit.MILLISECONDS.toSeconds (mili giây) - TimeUnit.MINUTES.toSeconds (
TimeUnit.MILLISECONDS.toMinutes (mili giây)));
}
Sử dụng java.text.SimpleDateFormatđể chuyển đổi phút thành giờ và phút
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();
}
Nó có thể được thực hiện như thế này
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();
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);
Hãy thử mã này:
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");
}
}
Đầu vào được cung cấp trong vài giây, bạn có thể chuyển đổi sang định dạng hh: mm: ss như sau:
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;
Tôi đã sử dụng formatHelper vì đầu vào có thể dài hơn 86 400 giây, tức là 24 giờ.
Nếu bạn muốn tổng thời gian nhập của mình được biểu thị bằng hh: mm: ss, bạn chỉ cần tránh formatHelper.
Tôi hy vọng nó sẽ giúp.
Tôi sử dụng chức năng này cho các dự án của mình:
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;
}
(Trong Kotlin) Nếu bạn định đặt câu trả lời vào TextView hoặc thứ gì đó, thay vào đó bạn có thể sử dụng tài nguyên chuỗi:
<string name="time">%02d:%02d</string>
Và sau đó, bạn có thể sử dụng tài nguyên Chuỗi này để đặt văn bản tại thời điểm chạy bằng cách sử dụng:
private fun setTime(time: Int) {
val hour = time / 60
val min = time % 60
main_time.text = getString(R.string.time, hour, min)
}
Đây là chức năng của tôi để chuyển đổi a second, millisecondthànhday,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);
}
}
Thử nghiệm
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));
}
Đầu ra
60 => 1:00
101 => 1:41
601 => 10:01
7601 => 2:06:41
36001 => 10:00:01
86401 => 1day 00:00:01
Hy vọng nó sẽ giúp
Minutes mod 60 sẽ cung cấp giờ với số phút còn lại.
bạn đã quên tầng trong câu trả lời của bạn:
int hours = Math.floor(t / 60);
int minutes = t % 60;
System.out.printf("%d:%02d", hours, minutes);
nếu không có nó, kết quả của bạn là sai trong trường hợp chắc chắn như ví dụ:
t = 525
hours = 8.75
do đó nếu không có Math.floor chúng ta có kết quả này: 9h45 thay vì 8h45.
tính số phút bằng cách sử dụng mã này:
long difference = new Date().getTime() - user.getUpdatedDate().getTime();
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(difference);
Trong Swift
func timeStringFrom(minutes:Double) -> String {
return "\(Int(minutes/60)):\(Int(minutes) % 60)"
}
int mHours = t / 60; //since both are ints, you get an int
int mMinutes = t % 60;
System.out.printf("%d:%02d", "" +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);
}
}