如何将值从纳秒转换为秒?
这是代码段:
import java.io.*;
import java.util.concurrent.*;
..
class Stamper {
public static void main (String[] args) {
long start = System.nanoTime();
//some try with nested loops
long end = System.nanoTime();
long elapsedTime = end - start;
System.out.println("elapsed: " + elapsedTime + "nano seconds\n");
//convert to seconds
TimeUnit seconds = new TimeUnit();
System.out.println("which is " + seconds.toSeconds(elapsedTime) + " seconds");
}}
Run Code Online (Sandbox Code Playgroud)
错误是
Stamper.java:16: enum types may not be instantiated.
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
我正在尝试获得一系列日期,而我的输入是'from'/'to'结构.所以我的意见是:
String date1 = "2014-01-01";
String date2 = "2014-05-01";
Run Code Online (Sandbox Code Playgroud)
我的输出应该是一个Arraylist,所有日期都在date1和date2之间.我已经找到了这个,但我只能找到两个日期之间差异的问题:
SimpleDateFormat myFormat = new SimpleDateFormat("dd MM yyyy");
String inputString1 = "23 01 1997";
String inputString2 = "27 04 1997";
try {
Date date1 = myFormat.parse(inputString1);
Date date2 = myFormat.parse(inputString2);
long diff = date2.getTime() - date1.getTime();
System.out.println ("Days: " + TimeUnit.DAYS.convert(diff,TimeUnit.MILLISECONDS));
} catch (ParseException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
任何提示或建议?所有其他问题都适用于iOS或SQL.
我正在使用 TimeUnit.MILLISECONDS.toDays(ms) 将毫秒时间量转换为天,但阅读 JavaDoc 我注意到它基于.convert()并失去精度
将给定单位的给定持续时间转换为此单位。从更细粒度到更粗粒度的转换会被截断,因此会失去精度。例如,将 999 毫秒转换为秒结果为 0。从粗粒度到细粒度的转换,如果为负,则数值溢出饱和为 Long.MIN_VALUE,如果为正,则为 Long.MAX_VALUE。
真是没想到,我的5分钟(300000ms)变成了0天。直接的解决方案是写这个
double days= (double)ms/1000*60*60*24;
Run Code Online (Sandbox Code Playgroud)
这很糟糕,我认为没有必要,但它有效。有什么建议吗?我可以使用任何其他功能吗?
ps:我不是在等你告诉我我应该将这些数字放入静态变量中,我试图了解什么样的解决方案是一个好的解决方案。提前致谢
我正在将一些签名从 迁移f(long dur, TimeUnit timeUnit)到f(Duration duration),并希望用后者来实现前者。
在 Java 8 上,我找不到任何 API 可以轻松地将long+转换TU为 a Duration,我唯一的想法就是做一些丑陋的事情,例如:
static Duration convert(long dur, TimeUnit timeUnit) {
switch (timeUnit) {
case DAYS:
return Duration.ofDays(dur);
case HOURS:
/* alternative, but (again) I don't have an easy conversion from TimeUnit -> ChronoUnit */
return Duration.of(dur, ChronoUnit.HOURS);
case ..... /* and so on */
}
}
Run Code Online (Sandbox Code Playgroud)
或者我错过了一些API?
我想传递一个时间数字,TimeUnit它就在.
long number = some number;
TimeUnit timeUnit = some arbitrary time unit
Run Code Online (Sandbox Code Playgroud)
什么可以Object将Java中的时间和时间单元保持在一起?
我正在尝试计算两天之间的天数差异.出于某种原因,比较01-03-2013和01-04-2013给出结果30,比较01-03-2013和31-03-2013
Calendar cal = Calendar.getInstance();
cal.clear();
cal.set(2013, Calendar.MARCH, 1);
Date start = cal.getTime();
cal.set(2013, Calendar.APRIL, 1);
Date end = cal.getTime();
long days = TimeUnit.MILLISECONDS.toDays(end.getTime() - start.getTime());
System.out.println("!!! Amount of days : " + String.valueOf(days));
>> 30
cal.set(2013, Calendar.MARCH, 1);
start = cal.getTime();
cal.set(2013, Calendar.MARCH, 31);
end = cal.getTime();
days = TimeUnit.MILLISECONDS.toDays(end.getTime() - start.getTime());
System.out.println("!!! Amount of days : " + String.valueOf(days));
>> 30
Run Code Online (Sandbox Code Playgroud)
为什么是这样?
使用TimeUnit,如何将665477纳秒转换为0.665477毫秒?
long t = TimeUnit.MILLISECONDS.convert(665477L, TimeUnit.NANOSECONDS);
Run Code Online (Sandbox Code Playgroud)
这总是给出,0但我需要小数点精度.
遵循这个问题,我研究了 Android 作业调度,如果我想每月做一次某事,工作管理器似乎是最新的工具。我构建了一个 Worker 类,并在我的活动中使用以下代码片段激活它:
PeriodicWorkRequest myWorkRequest =
new PeriodicWorkRequest.Builder(MonthlyWorker.class, 20, TimeUnit.MINUTES)
.build();
WorkManager.getInstance().enqueueUniquePeriodicWork("my fancy test",ExistingPeriodicWorkPolicy.KEEP, myWorkRequest);
Run Code Online (Sandbox Code Playgroud)
虽然我成功测试了 20 分钟时间段,但存在一个问题:没有可用的月份时间单位,只有天数。由于明显的原因,每 30 天执行一次这项工作是行不通的,因为我需要在每个月的第一天执行该任务。所以我该怎么做?我必须使用不同的 API 吗?谢谢。
我可以做类似的事情if (dayOfMonth==1) do Function,但我认为这破坏了调度程序的目的。
我刚刚开始使用java进行编码我正在努力设置DelayQueue,
我想拥有它,
DelayQueue queue = new DelayQueue();
If (counter > 0){
queue.offer(Integer, *A custom delay*)
} Else {
queue.offer(Integer, *A different custom delay*)
}
Run Code Online (Sandbox Code Playgroud)
我只是想学习所有的基础知识,而且我已经阅读了API并且似乎无法掌握它.
提前致谢
我接过来一看进入TimeUnit和toMillis()方法.
public long toMillis(long paramLong)
{
throw new AbstractMethodError();
}
Run Code Online (Sandbox Code Playgroud)
toMillis()除了抛出AbstractMethodError异常之外,什么都不做.
那么,toMillis()方法如何将秒,分钟等转换为毫秒?