我想要这样的东西:
public class Stream
{
public startTime;
public endTime;
public getDuration()
{
return startTime - endTime;
}
}
Run Code Online (Sandbox Code Playgroud)
同样重要的是,例如,如果startTime为23:00,endTime为1:00,则持续时间为2:00.
在Java中使用哪些类型来实现这一目的?
我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.
对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:
>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud) datetime android android-gradle-plugin threetenbp threetenabp
如何在Date对象中添加n小时?我发现在StackOverflow上使用days的另一个例子,但仍然不明白如何用几个小时来做.
我有一个epoch秒和一个zoneId,方法1.它可以转换为LocalDateTime与系统默认的zoneId,但我找不到方法将第二个转换为LocalDateTime by method2,因为没有ZoneOffset.systemDefault.我认为它是模糊的.
import java.time.{Instant, LocalDateTime, ZoneId, ZoneOffset}
val epochSecond = System.currentTimeMillis() / 1000
LocalDateTime.ofInstant(Instant.ofEpochSecond(epochSecond), ZoneId.systemDefault())//method1
LocalDateTime.ofEpochSecond(epochSecond, 0, ZoneOffset.MAX)//method2
Run Code Online (Sandbox Code Playgroud) 嗨我对时区的疑问很少:
我搜索了维基百科和许多相关网站,但没有找到相关的解释
我正在尝试将Date实例转换为LocalTime实例.
// Create the Date
Date date = format.parse("2011-02-18 05:00:00.0");
// Convert to Calendar
Calendar cal = Calendar.getInstance();
cal.setTime(date);
// Convert Calendar to LocalTime
Instant instant = Instant.ofEpochMilli(cal.getTimeInMillis());
LocalTime convert = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()).toLocalTime();
Run Code Online (Sandbox Code Playgroud)
我没有得到编译器错误,但LocalTime实例值是错误的.
我认为它不起作用,因为Date存储时间fasttime而不是cdate.
我正在使用JDK 1.8版.
我有以毫秒为单位的时间,我需要将其转换为 ZonedDateTime 对象。
我有以下代码
long m = System.currentTimeMillis();
LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);
Run Code Online (Sandbox Code Playgroud)
线
LocalDateTime d = LocalDateTime.millsToLocalDateTime(m);
Run Code Online (Sandbox Code Playgroud)
给我一个错误,说本地日期时间类型未定义methed millsToLocalDateTime
以下两个日期在实践中有什么区别?
Date date = new Date();
Date date = Calendar.getInstance().getTime();
我的理解是新的Date()是基于UTC/GMT的日期,而日历的getTime()是基于TimeZone和系统时间.我对吗?我还想念一些东西吗?
而且,如果我的上述理解是正确的,我可以说以下两个函数的最终结果完全相同吗?
1.
public String getDate1(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//I set the time zone & pass the new Date()
sdf.setTimeZone(TimeZone.getDefault());
return sdf.format(new Date());
}
Run Code Online (Sandbox Code Playgroud)
2.
public String getDate2(){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
//I didn't set the time zone because I think calendar instance will handle timezone change
return sdf.format(Calendar.getInstance().getTime());
}
Run Code Online (Sandbox Code Playgroud)
如果你能指出我错误理解的地方并清楚地向我解释,我感激不尽.因为我觉得这件事让我很困惑.谢谢!
在Java 8中可以获得微秒吗?Java 8 LocalDateTime类有一个.getNano()方法可以返回nanoseconds,但在Linux(Ubuntu)和OS X(10.11.5)上它只返回milliseconds(当我运行它返回时301000000等于301 milliseconds)并且我真的需要能够获得microseconds.
我知道有可能在我的计算机上获取nanoseconds(因此得到microseconds它),因为javascript方法process.hrtime()返回一个精确的值.
在任何人开始精确与准确的论证之前,我知道线程之间的纳秒是完全不可靠的,不应该用于比较.
编辑:
要清楚,LocalDateTime该类是Java 8类的一部分java.time.
更新:
所以我意识到Javascript process.hrtime就像Java一样System.nanoTime(),实际上与挂钟没有关系,因为它是两个语言之间不同的任意值.
新问题:有没有办法可以解析这些值的时钟时间?IE浏览器.如果我System.currentTimeMillis()和System.nanoTime(),和比较,另一组这些值的我能得到第二组值的实际时间?
我的问题是我需要使用Java和Javascript进行日志记录,并且需要在两者之间都有一致的微秒字段.