我试图计算两者之间的差异LocalDateTime.
输出必须是格式y years m months d days h hours m minutes s seconds.这是我写的:
import java.time.Duration;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.Period;
import java.time.ZoneId;
public class Main {
static final int MINUTES_PER_HOUR = 60;
static final int SECONDS_PER_MINUTE = 60;
static final int SECONDS_PER_HOUR = SECONDS_PER_MINUTE * MINUTES_PER_HOUR;
public static void main(String[] args) {
LocalDateTime toDateTime = LocalDateTime.of(2014, 9, 9, 19, 46, 45);
LocalDateTime fromDateTime = LocalDateTime.of(1984, 12, 16, 7, 45, 55);
Period period = getPeriod(fromDateTime, toDateTime); …Run Code Online (Sandbox Code Playgroud) 我正在添加这个问题,因为我是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
我想计算时间瞬间之间的时差.例如,在程序执行期间,我设置变量的值,一段时间后我再次更改它.最近的价值变化与之前价值之间的时差是多少?
我想测量Java中的经过时间.但是System.currentTimeMillis(),(我相信)的差异System.nanoTime()可以通过外部变化来改变,例如某人(或系统)改变系统时钟.
使用网络呼叫不是一种选择,因为它可能非常频繁且需要快速返回.
对此有一个共同的解决方案吗?
编辑
对不起,我应该详细说明原因.它不是要阻止恶意用户 - 就像客户端发起的空闲登出和常规客户端事件一样.
有很多SO问题涉及计算Java中两个日期或两个日期之间的差异.许多答案指出了核心Java Date类的问题,并建议使用Jodatime,但AFAIK,没有任何建议使用jsr310如何做到这一点.
那么,有什么方法可以在jsr310中计算两个日期或两个日期之间的差异吗?
作为参考,以下问题可以解决此问题:
在核心Java中:
在Jodatime:
我正在使用以下函数来计算时差.它没有显示正确的输出.1个月的时差后,它显示出2分钟的差异.
我的计划有什么问题?
public String TimestampDiff(Timestamp t) {
long t1 = t.getTime();
String st = null;
long diff;
java.util.Date date = new java.util.Date();
long currT = date.getTime();
System.out.println();
System.out.println(" current timesstamp is " + currT);
diff = (currT - t1) / 60;
int years = (int) Math.floor(diff / (1000 * 60 * 60 * 24 * 365));
double remainder = Math.floor(diff % (1000 * 60 * 60 * 24 * 365));
int days = (int) Math.floor(remainder / (1000 * 60 * …Run Code Online (Sandbox Code Playgroud) datetime ×5
java ×5
date ×2
android ×1
clock ×1
difference ×1
java-8 ×1
jsr310 ×1
threetenabp ×1
threetenbp ×1