java日期计算
㈠ java计算两个日期时间相差几天,几小时,几分钟等
思路是先计算两个日期相差的毫秒数,然后分别根据每天的毫秒数、每小时的毫秒数、每分钟的毫秒数来计算相差几天,几小时,几分钟。具体代码如下:
public static String getDatePoor(Date endDate, Date nowDate) {
long nd = 1000 * 24 * 60 * 60;//每天毫秒数
long nh = 1000 * 60 * 60;//每小时毫秒数
long nm = 1000 * 60;//每分钟毫秒数
long diff = endDate.getTime() - nowDate.getTime();// 获得两个时间的毫秒时间差异
long day = diff / nd; // 计算差多少天
long hour = diff % nd / nh;// 计算差多少小时
long min = diff % nd % nh / nm; // 计算差多少分钟
return day + "天" + hour + "小时" + min + "分钟";
}
然后做一个测试,调用这个方法测试一下:
可以看出两个日期时间相差几天,几小时,几分钟都可以算出来。
(1)java日期计算扩展阅读:
Java使用以下三种方法来比较两个日期:
1、使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
2、使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3、使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
㈡ java中怎么计算两个日期之间的天数
java.text.SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// java.util.Calendar calendar = Calendar.getInstance();
//
// Date today = sdf.parse(sdf.format(new Date())); //将今天的日期格式化成 yyyy-MM-dd
// Date chooseDate = sdf.parse("2015-10-01"); //将选择是日期转换成Date
// long t = chooseDate.getTime() - today.getTime(); //计算两个日期的时间差
// long d = t / (1000 * 60 * 60 * 24); //计算两个日期相差的天数
㈢ java 计算某日期 多少天后的日期
java计算某日期之后的日期,可以参考如下代码:
public static void main(String[] args) {
// 时间表示格式可以改变,yyyyMMdd需要写例如20160523这种形式的时间
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
String str = "2016/05/23";
// 将字符串的日期转为Date类型,ParsePosition(0)表示从第一个字符开始解析
Date date = sdf.parse(str, new ParsePosition(0));
Calendar calendar = Calendar.getInstance();
calendar.setTime(date);
// add方法中的第二个参数n中,正数表示该日期后n天,负数表示该日期的前n天
calendar.add(Calendar.DATE, -10);
Date date1 = calendar.getTime();
String out = sdf.format(date1);
System.out.println(out);
}
㈣ JAVA日期计算
import java.util.Date;
public class DateUtil
{
/**
* milliseconds in one day
*/
public static final long MILLIS_IN_DAY = 1000 * 60 * 60 * 24;
/**
* get the n th date after the given date
*/
public static Date getNextNDate(Date date, int n) {
return new Date(date.getTime() + DateUtil.MILLIS_IN_DAY * n);
}
public static void main(String[] args) {
Date now = new Date();
System.out.println(now);
System.out.println("ten days later");
System.out.println(getNextNDate(now,10));
}
}
㈤ java如何计算日期的加减
第一种,知道日期,如2019091109144
String str=txnTime;
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");//格式化输出日期
Date dt = null;
try {
dt = sdf.parse(str);
} catch (ParseException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
Calendar rightNow = Calendar.getInstance();
rightNow.setTime(dt);
rightNow.add(Calendar.YEAR,-1);//日期减1年
rightNow.add(Calendar.MONTH,3);//日期加3个月
rightNow.add(Calendar.DAY_OF_YEAR,10);//日期加10天
rightNow.add(Calendar.SECOND,60);//日期加60秒天
Date dt1=rightNow.getTime();
String reStr = sdf.format(dt1);
System.out.println(reStr);
第二种,自己获取时间,格式化输出计算加减
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");//格式化输出日期
Date now = new Date();
long time = 60*1000;//60秒
Date afterDate = new Date(now .getTime() + time);//60秒后的时间
Date beforeDate = new Date(now .getTime() - time);//60秒前的时间
System.out.println(sdf.format(afterDate ));
㈥ (JAVA)输入年月日,计算日期是今年的第几天
import java.util.Scanner;
/**
* Created by xpf on 2018/6/22 :)
* GitHub:xinpengfei520
* Function:
*/
public class CalculateUtils {
/*平年二月28天*/
private static final int DAYS_28 = 28;
/*闰年二月29天*/
private static final int DAYS_29 = 29;
/*除了31天的月份其他均为30天*/
private static final int DAYS_30 = 30;
/*1、3、5、7、8、10、12月份31天*/
private static final int DAYS_31 = 31;
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("Please input year:");
int year = input.nextInt();
System.out.println("Please input month:");
int month = input.nextInt();
System.out.println("Please input day:");
int day = input.nextInt();
int daysInYear = getDaysInYear(year, month, day);
System.out.println("daysInYear:" + daysInYear);
}
/**
* get days in this year
*
* @param year
* @param month
* @param day
* @return
*/
public static int getDaysInYear(int year, int month, int day) {
int totalDays = 0;
switch (month) {
// 12 月份加的是11月份的天数,依次类推
case 12:
totalDays += DAYS_30;
case 11:
totalDays += DAYS_31;
case 10:
totalDays += DAYS_30;
case 9:
totalDays += DAYS_31;
case 8:
totalDays += DAYS_31;
case 7:
totalDays += DAYS_30;
case 6:
totalDays += DAYS_31;
case 5:
totalDays += DAYS_30;
case 4:
totalDays += DAYS_31;
case 3:
// 判断是否是闰年
if (((year / 4 == 0) && (year / 100 != 0)) || (year / 400 == 0)) {
totalDays += DAYS_29;
} else {
totalDays += DAYS_28;
}
case 2:
totalDays += DAYS_31;
case 1: // 如果是1月份就加上输入的天数
totalDays += day;
}
return totalDays;
}
}
【解题思路】
1、通过年份区分是闰年还是平年,平年 2 月 28 年,闰年 2 月 29 天。
2、1、3、5、7、8、10、12 月份为 31 天,其余月份为 30 天。
3、将每个月的天数相加即可,如果输入的是 12 月,则从 11 月往前累加到1月。
(6)java日期计算扩展阅读
其他java计算日期的方式
package study01;
import java.util.Scanner;
public class TestDay {
/*
* 输入2017年的月和日:month=?,day=? 输出输入的日期是2017年的第几天,使用switch完成
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("month=");
int month = sc.nextInt();
System.out.print("day=");
int day = sc.nextInt();
int days = 0;
switch (month) {
case 12:
days += 30;
case 11:
days += 31;
case 10:
days += 30;
case 9:
days += 31;
case 8:
days += 31;
case 7:
days += 30;
case 6:
days += 31;
case 5:
days += 30;
case 4:
days += 31;
case 3:
days += 28;
case 2:
days += 31;
case 1:
days += day;
}
if(days>365){
System.out.println("你输入的已经超过了365天了");
}else{
System.out.println("第" + days + "天");
}
}
}
输出的结果如下:
month=12
day=31
第365天
㈦ 用JAVA编写 知道一个日期,怎么计算出这个日
先求出今天是星期几,然后算距离周一差几天,距离周末差几天,进行加运算
这中间还要判断是否是月初,月末,年初,年末,然后做相应的加减就行了
算星期几好像是 求出1900年一月一号到你给的这个日期的总天数,然后对7取余
public static void getTime(Date date) {
if(date == null) date=new Date();
Calendar calendar=Calendar.getInstance();
calendar.setTime(date);
int dow=calendar.get(Calendar.DAY_OF_WEEK);
if(dow==7) dow=0;
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
//本周最小日期
calendar.add(Calendar.DAY_OF_YEAR, -dow);
String strDate=sdf.format(calendar.getTime());
System.out.println(strDate);
// 本周最大日期
calendar.add(Calendar.DAY_OF_YEAR, 6);
strDate=sdf.format(calendar.getTime());
System.out.println(strDate);
}
㈧ java计算两个日期相差多少天小时分钟等
Date d=new Date();
SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
System.out.println("今天的日期:"+df.format(d));
System.out.println("两天前的日期:" + df.format(new Date(d.getTime() - (long)2 * 24 * 60 * 60 * 1000)));
System.out.println("三天后的日期:" + df.format(new Date(d.getTime() + (long)3 * 24 * 60 * 60 * 1000)));
㈨ Java 写个程序计算日期
import java.util.Calendar;
import java.util.GregorianCalendar;
public class MyDate {
public static void main(String[] args) {
Calendar date = Calendar.getInstance();
System.out.println(date.getTime());
System.out.println("....................................");
System.out.println("当前年份:" + date.get(Calendar.YEAR) + " 年");
System.out.println("当前月份:" + (date.get(Calendar.MONTH) + 1) + " 月");
System.out.println("当前日期:" + date.get(Calendar.DATE) + " 日");
System.out.println("....................................");
System.out.println("小时:" + date.get(Calendar.HOUR) + " " + (date.get(Calendar.AM_PM) == 0 ? "PM" : "AM"));
System.out.println("小时:" + date.get(Calendar.HOUR_OF_DAY));
System.out.println("分钟:" + date.get(Calendar.MINUTE));
System.out.println("秒:" + date.get(Calendar.SECOND));
System.out.println("毫秒:" + date.get(Calendar.MILLISECOND));
System.out.println("....................................");
System.out.println(getWeekStr(date.get(Calendar.DAY_OF_WEEK)));
System.out.println("当前月份的第 " + date.get(Calendar.DAY_OF_MONTH) + " 天");
System.out.println("当前年份的第 " + date.get(Calendar.DAY_OF_YEAR) + " 天");
System.out.println("....................................");
boolean b = ((GregorianCalendar) date).isLeapYear(date.get(Calendar.YEAR));
if (b) {
System.out.println("闰年");
} else {
System.out.println("平年");
}
}
// 判断是否是闰年,是返回true,否则返回false
public static boolean isLeanYear(int year) {
boolean falg = false;
if ((year % 4 == 0) && (year % 100 != 0) || year % 400 == 0) {
falg = true;
}
return falg;
}
public static String getWeekStr(int num) {
switch (num) {
case 1:
return "星期 日";
case 2:
return "星期一 ";
case 3:
return "星期 二 ";
case 4:
return "星期三 ";
case 5:
return "星期 四";
case 6:
return "星期 五 ";
case 7:
return "星期六 ";
}
return "";
}
}
㈩ java中如何计算出两个日期之间相差多少天
思路就是根据它们相差的毫秒数除以每天的毫秒数(60*60*24*1000),代码如下:
public static void main(String[] args) throws ParseException {
String date1="1987-01-01";
String date2="2010-01-01";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-mm-dd");
Date d1=sdf.parse(date1);
Date d2=sdf.parse(date2);
long daysBetween=(d2.getTime()-d1.getTime()+1000000)/(60*60*24*1000);
System.out.println("1987-01-01 与 2010-01-01 相隔 "+daysBetween+" 天");
}
运行结果如下:
(10)java日期计算扩展阅读:
Java使用以下三种方法来比较两个日期:
1、使用 getTime() 方法获取两个日期(自1970年1月1日经历的毫秒数值),然后比较这两个值。
2、使用方法 before(),after() 和 equals()。例如,一个月的12号比18号早,则 new Date(99, 2, 12).before(new Date (99, 2, 18)) 返回true。
3、使用 compareTo() 方法,它是由 Comparable 接口定义的,Date 类实现了这个接口。
SimpleDateFormat 是一个以语言环境敏感的方式来格式化和分析日期的类。SimpleDateFormat 允许你选择任何用户自定义日期时间格式来运行
例如:
SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");
这一行代码确立了转换的格式,其中 yyyy 是完整的公元年,MM 是月份,dd 是日期,HH:mm:ss 是时、分、秒。
注意:有的格式大写,有的格式小写,例如 MM 是月份,mm 是分;HH 是 24 小时制,而 hh 是 12 小时制。
以上实例编译运行结果如下:
当前时间为: 2018-09-14 10:16:34
菜鸟教程-Java 日期时间