我看到这个问题已经解决了Java,JavaScript和PHP,但不是C#.那么,如何计算C#中两个日期之间的天数呢?
我想记录System.currentTimeMillis()用户在我的程序中开始使用时的时间.当他完成后,我会减去当前System.currentTimeMillis()从start变量,我想向他们展示使用人类可读的格式经过诸如"XX小时XX分钟,XX秒",甚至是"XX分钟,XX秒",因为它的时间一个小时不太可能带人
最好的方法是什么?
我知道有很多关于如何获得的问题,但我想要和使用新的Java 8 Date api的例子.我也知道JodaTime库,但我想要一种没有外部库的工作方式.
功能需要抱怨这些限制:
我正在添加这个问题,因为我是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
我想计算2小时/分钟/秒之间的差异.
我的代码在这里有点问题:
String dateStart = "11/03/14 09:29:58";
String dateStop = "11/03/14 09:33:43";
// Custom date format
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
Date d1 = null;
Date d2 = null;
try {
d1 = format.parse(dateStart);
d2 = format.parse(dateStop);
} catch (ParseException e) {
e.printStackTrace();
}
// Get msec from each, and subtract.
long diff = d2.getTime() - d1.getTime();
long diffSeconds = diff / 1000;
long diffMinutes = diff / (60 * 1000);
long diffHours = diff …Run Code Online (Sandbox Code Playgroud) 我想要一个Java程序来计算两个日期之间的天数.
我怎样才能包括闰年和夏季?
我的代码:
import java.util.Calendar;
import java.util.Date;
import java.util.Scanner;
public class NewDateDifference {
public static void main(String[] args) {
System.out.print("Insert first date: ");
Scanner s = new Scanner(System.in);
String[] eingabe1 = new String[3];
while (s.hasNext()) {
int i = 0;
insert1[i] = s.next();
if (!s.hasNext()) {
s.close();
break;
}
i++;
}
System.out.print("Insert second date: ");
Scanner t = new Scanner(System.in);
String[] insert2 = new String[3];
while (t.hasNext()) {
int i = 0;
insert2[i] = t.next(); …Run Code Online (Sandbox Code Playgroud) 我有两个DateTime对象,需要找到它们的差异持续时间,
我有以下代码,但不知道如何继续它以获得预期的结果如下:
例
11/03/14 09:30:58
11/03/14 09:33:43
elapsed time is 02 minutes and 45 seconds
-----------------------------------------------------
11/03/14 09:30:58
11/03/15 09:30:58
elapsed time is a day
-----------------------------------------------------
11/03/14 09:30:58
11/03/16 09:30:58
elapsed time is two days
-----------------------------------------------------
11/03/14 09:30:58
11/03/16 09:35:58
elapsed time is two days and 05 mintues
Run Code Online (Sandbox Code Playgroud)
码
String dateStart = "11/03/14 09:29:58";
String dateStop = "11/03/14 09:33:43";
Custom date format
SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
Date d1 = null;
Date d2 = null; …Run Code Online (Sandbox Code Playgroud) 我需要找到两个日期之间的天数:一个来自报告,一个是当前日期.我的片段:
int age=calculateDifference(agingDate, today);
Run Code Online (Sandbox Code Playgroud)
这calculateDifference是一个私有方法,agingDate并且today是Date对象,仅供您澄清.我已经关注了Java论坛中的两篇文章,即Thread 1/Thread 2.
它在独立程序中运行良好,但是当我将其包含在我的逻辑中以从报告中读取时,我会得到一个不寻常的值差异.
为什么会发生这种情况?我该如何解决?
编辑:
与实际天数相比,我获得的天数更多.
public static int calculateDifference(Date a, Date b)
{
int tempDifference = 0;
int difference = 0;
Calendar earlier = Calendar.getInstance();
Calendar later = Calendar.getInstance();
if (a.compareTo(b) < 0)
{
earlier.setTime(a);
later.setTime(b);
}
else
{
earlier.setTime(b);
later.setTime(a);
}
while (earlier.get(Calendar.YEAR) != later.get(Calendar.YEAR))
{
tempDifference = 365 * (later.get(Calendar.YEAR) - earlier.get(Calendar.YEAR));
difference += tempDifference;
earlier.add(Calendar.DAY_OF_YEAR, tempDifference);
} …Run Code Online (Sandbox Code Playgroud)