java如何将日期转换为小时和分钟
如何将日期转换为小时和分钟? 这样一种方式:java如何将日期转换为小时和分钟,java,jodatime,formatter,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)
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小时,则应增加小时数,而不是增加天数假设您需要当前月份的小时数和分钟数,使用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());
}
如果您需要更奇特的参考时间,即需要计算小时距离的时刻,您可以查看Duration and PeriodFormatterBuilder。1425小时相对于什么?而且,您是否因为基于Jodatime的解决方案是可接受的,而将问题标记为Jodatime?每个将java.util.date或long转换为此格式的解决方案都是可接受的。例如,1425小时意味着一个月大约720分钟,如果日期大于24小时,则应增加小时而不是增加天。如果日期大于24小时,则没有任何意义。你知道2014年6月25日不是一个持续时间,对吗?我想你的意思是一个月大约是720小时,而不是分钟。但是,1425是从哪里来的呢?主要问题是convert方法的签名中缺少引用时间。关于时间戳与持续时间的关系,这个问题一点也不清楚。我们不应鼓励OP使用具有此类签名的方法。如果该方法至少有两个DateTime类型的参数,那么建议使用更好的方法名称(如between)是可以容忍的。@MenoHochschild我在注释中尝试了两次,试图让OP解释1425的起源,但都没有用。因为我没有得到答案,我希望第一个,公认的幼稚方法——但已经有了指向更复杂、通用和可重用解决方案的指针——能够帮助OP最终正确地解决这个问题。不是这样,你想让我怎么办?这个问题现在被搁置,这是完全合理的,我认为对于那些如此频繁的情况,人们尽管得到了帮助,但他们甚至没有或多或少地清楚地阐述他们所面临的问题。@MenoHochschild我编辑了我的question@fvu那么你已经做了你的努力,-@AhmadReza嗯,内部日期使用一个特殊的持续时间作为状态模型,即固定点1970-01-01T00:00:00Z和要建模的结束时间戳之间的持续时间。但这并没有改变日期对象本身不是持续时间而是时间戳这一事实。对于我和大多数其他人来说,使用UNIX epoch作为时间间隔的开始,然后对问题本身中的这个完全武断的选择保持沉默是不自然的。