我想用H:MM:SS这样的模式格式化持续时间(以秒为单位).java中的当前实用程序旨在格式化时间而不是持续时间.
我需要在java中将分钟转换为小时和分钟.例如260应该是4:20.任何人都可以帮助我如何转换它.
输入这个问题的标题让我想到了这个问题.我正在寻找相同的东西,但如果你理解我的意思,可能不那么静态地格式化了什么?
我正在编写一个快速程序,它将使用两个DateTime对象的TimeSpan持续时间并输出它们以便打印到纸上.
首选的格式是:( XX days, YY hours, ZZ minutes秒是无关紧要的;因为我不希望时间跨度超过几个小时).
说下面的代码(作为例子):
DateTime start = DateTime.Now;
DateTime end = DateTime.Now.AddMinutes(135);
TimeSpan duration = (end - start);
// output duration as XX hours, YY minutes
Run Code Online (Sandbox Code Playgroud)
谢谢,
扎克
PS我也跑过" PrettyTime.NET ",但它输出的内容就像"3天前"等等.我在google上找到的其他主题用来格式化持续时间字符串,就像上面的例子一样,这使我得到了一个基于Java的解决方案.:\
更新2014-09-08:
为了在3年后进行跟进,我在NuGet和Github上找到了一个很棒的库,名为" Humanizer ",可以解决我遇到的这个问题.我没有那么多使用它,但我确实尝试了它并且它的工作非常好.它虽然是一个相当大的库(它为你的项目的构建路径发出了不同文化的大量文件夹(我确信有一种方法可以自定义它)).
我现在遇到一个很奇怪的问题,replaceAll该String对象缺少该方法。
JDK版本:1.8.0
Android Studio版本:3.1.3
Kotlin版本:1.2
它尚未被删除,所以这里发生了什么??
为什么以下Java代码的输出是04:18:23而不是03:18:23?
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
try {
Date start = sdf.parse("00:44:16");
Date end = sdf.parse("04:02:39");
long duration = end.getTime() - start.getTime();
Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(duration);
System.out.println(sdf.format(cal.getTime()));
} catch (ParseException e) {
e.printStackTrace();
}
}
Run Code Online (Sandbox Code Playgroud) 我使用日期和时间对话框来获取用户指定的事件的日期和时间.该数据是通过执行以下操作转换的:
int yearE = Integer.valueOf(evntDate.split("/")[2]);
int monthE = Integer.valueOf(evntDate.split("/")[1]);
int dayE = Integer.valueOf(evntDate.split("/")[0]);
int hour = Integer.valueOf(evntTm.split(":")[0]);
int min = Integer.valueOf(evntTm.split(":")[1]);
Run Code Online (Sandbox Code Playgroud)
价值观:
eventDate = "3/5/2015";
eventTime = "13:2";
Run Code Online (Sandbox Code Playgroud)
然后我获取该数据并将其转换为毫秒并将其存储在数据库中:
newCalendar.set(yearE, monthE, dayE,hour, min, 0);
startTime = newCalendar.getTimeInMillis();
...
Run Code Online (Sandbox Code Playgroud)
当我从数据库加载信息时,我尝试计算到指定日期之前剩余的时间.所以我做了以下事情:
Long timeL = Long.valueOf(time);
Calendar eventDay = Calendar.getInstance();
eventDay.setTimeInMillis(timeL);
Calendar today = Calendar.getInstance();
long diff = eventDay.getTimeInMillis() - today.getTimeInMillis();
// CONVERT:
int seconds = (int) TimeUnit.MILLISECONDS.toSeconds(diff);
int minutes = (int) TimeUnit.MILLISECONDS.toMinutes(diff);
int hours = (int) TimeUnit.MILLISECONDS.toHours(diff);
int days = (int) TimeUnit.MILLISECONDS.toDays(diff); …Run Code Online (Sandbox Code Playgroud) 我在将以秒为单位的时间转换1352364为“周、天、小时、秒、分钟”的时间戳格式时遇到问题。到目前为止,这是我的代码。
int timeToGrow = 1352364;
int secs = timeToGrow % 60;
int mins = (timeToGrow / 60) % 60;
int hours = (timeToGrow / 60) / 60;
int days = ((timeToGrow / 60) / 60) / 24;
int weeks = (((timeToGrow/60)/60)/24)/7;
System.out.println(weeks + " Weeks "+ days + " Days " + hours + " Hours " + mins + " Minutes " + secs + " Seconds.");
Run Code Online (Sandbox Code Playgroud)
代码应该打印出来2 Weeks 1 Days 15 Hours 39 Minutes 24 …