java如何将日期转换为小时和分钟

时间:2014-06-25 13:59:24

标签: java jodatime formatter

如何将日期转换为小时和分钟? 这样的方式:

Date d=new Date();
String str=convertToMyFormat(d);
print(str);
// for example for date Sat Jan 03 04:40:00 GMT+03:30 1970 print should be some 
//thing  like this:
>> str ="50:10";

如果此代码创建日期:

Period p = new Period(0l);
p = p.plusDays(2);
p = p.plusMinutes(70);
d=new Date(p.toStandardDuration().getMillis());

此解决方案

public String convertToMyFormat(Date d){
 Duration du=new Duration(d.getTime())
 str=du.toStandardHours().getHours() + ":"+ du.getMinutes();
 return str;
}

打印分钟大于60.“49:70”

我需要的方法是,如果分钟超过60小时。 将java.util.date或long转换为此格式的每个解决方案都是可以接受的。如果持续时间大于24小时,则应增加小时数而不是添加白天

1 个答案:

答案 0 :(得分:0)

假设您需要当月和分钟的小时数,请使用Jodatime:

public static String convert (DateTime input) {
    int hours = (input.getDayOfMonth() - 1) * 24 + input.getHourOfDay();
    return String.format("%d:%02d",hours,input.getMinuteOfHour());
}

public static void main(String[] args) {
    System.out.println(convert(new DateTime("2014-01-01T22:09")) );
    System.out.println(convert(new DateTime("2014-01-03T22:21")) );
    System.out.println(convert(new DateTime("2014-01-31T22:44")) );
}

输出

22:09
70:21
742:44

编辑:当年的抵消原则相同:

public static String convertOffsetInYear (DateTime input) {
    int hours = (input.getDayOfYear() - 1) * 24 + input.getHourOfDay();
    return String.format("%d:%02d",hours,input.getMinuteOfHour());
}

如果您需要更多异国情调的参考时间(即需要计算小时距离的时刻),您可以查看持续时间和PeriodFormatterBuilder。