日期计算代码java 日期期间怎么计算

用Java编制一个日期计算程序

import java.util.Calendar; import java.util.Date; import java.util.Scanner; /** * */ /** * @author think * */ public class Test1 { /** * */ public Test1() { // TODO Auto-generated constructor stub } /** * function: * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub new Test1().print(); } /** * function: 打印函数 包含对当前输入的月历的打印 以及输入和输出的打印 */ public void print(){ //当月天数 //输入你的查询年月 如果直接输入月 默认是当前年 Scanner scanner = new Scanner(System.in); System.out.println("1.please input the month:"); int month = scanner.nextInt(); while(month = 0 || month 12) { System.out.println("1.please input the month:"); month = scanner.nextInt(); } int days = days(month); String[] weeks = {"sun","mon","tue","wed","thr","Frd","sat"}; for (int i = 0; i weeks.length; i++) { System.out.print(weeks[i]); for (int j = 0; j 2; j++) { System.out.print(" "); } } System.out.println(); int weekOfday = getWeekOfday(month,1); //获得第一天的星期 for (int i = 0; i (weekOfday - 1) * 5; i++) { System.out.print(" "); } for (int i = 1; i = days; i++,weekOfday +=1) { if(weekOfday == 8) { weekOfday = 1; System.out.println(); System.out.print(i); } else { System.out.print(i); } for (int j = 0; j 5 - (String.valueOf(i).length()); j++) { System.out.print(" "); } } System.out.println("\n"); System.out.println("2.please input the date(format is like:20030204):"); String date = scanner.next(); while(date.length() 8) { System.out.println("2.please input the date(format is like:20030204):"); date = scanner.next(); } System.out.println("your input date weekday is:" + (getWeekDayStr(getWeekOfday(date)))); System.out.println("\n"); System.out.println("3.please input the compute date1(format is like:20030204):"); String date1 = scanner.next(); while(date.length() 8) { System.out.println("3.please input the compute date1(format is like:20030204):"); date1 = scanner.next(); } System.out.println("3.please input the compute date2(format is like:20030204):"); String date2 = scanner.next(); while(date.length() 8) { System.out.println("3.please input the compute date2(format is like:20030204):"); date2 = scanner.next(); } int xiangchadays = daysxiangcha(date1, date2); System.out.println("xiangcha days is:" + xiangchadays); } /** * function: 通过准确的年月日查询星期几的整数表示 * @param year * @param month * @param day * @return */ public int getWeekOfday(int year,int month, int day) { Calendar c = Calendar.getInstance(); c.set(Calendar.YEAR, year); c.set(Calendar.MONTH, month - 1); c.set(Calendar.DAY_OF_MONTH, day); return c.get(Calendar.DAY_OF_WEEK); } /** * function: 通过输入月日 查询星期几的整数表示 默认是当前年 * @param month * @param day * @return */ public int getWeekOfday(int month, int day) { Calendar c = Calendar.getInstance(); c.setTime(new Date()); int year = c.get(Calendar.YEAR); return getWeekOfday(year, month, day); } /** * function: 通过日期字符串获得星期几的整数表示 * @param dateStr * @return */ public int getWeekOfday(String dateStr) { int year =Integer.parseInt(dateStr.substring(0, 4)) ; int month =Integer.parseInt(dateStr.substring(4, 6)) ; int day =Integer.parseInt(dateStr.substring(6, 8)) ; return getWeekOfday(year, month, day); } /** * function: 返回星期几这样的表示 * @param weekday * @return */ public String getWeekDayStr(int weekday) { return weekDayStrs[weekday - Calendar.SUNDAY]; } String[] weekDayStrs = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"}; /** * function: 两个日期的相差天数 * @param dateStr1 20100205这样的格式 * @param dateStr2 20100205这样的格式 * @return */ public int daysxiangcha(String dateStr1,String dateStr2) { int year1 =Integer.parseInt(dateStr1.substring(0, 4)) ; int month1 =Integer.parseInt(dateStr1.substring(4, 6)) ; int day1 =Integer.parseInt(dateStr1.substring(6, 8)) ; int year2 =Integer.parseInt(dateStr2.substring(0, 4)) ; int month2 =Integer.parseInt(dateStr2.substring(4, 6)) ; int day2 =Integer.parseInt(dateStr2.substring(6, 8)) ; Calendar c1 = Calendar.getInstance(); c1.set(Calendar.YEAR, year1); c1.set(Calendar.MONTH, month1 -1); c1.set(Calendar.DAY_OF_MONTH, day1); Calendar c2 = Calendar.getInstance(); c2.set(Calendar.YEAR, year2); c2.set(Calendar.MONTH, month2 - 1); c2.set(Calendar.DAY_OF_MONTH, day2); long mills = c1.getTimeInMillis() c2.getTimeInMillis()? c1.getTimeInMillis() - c2.getTimeInMillis(): c2.getTimeInMillis() - c1.getTimeInMillis(); return (int)(mills/1000/3600/24); } /** * @param year * @param month * @return 某年某月的天数 */ public static int days(int year,int month) { int days = 0; if(month!=2) { switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12:days = 31 ;break; case 4: case 6: case 9: case 11:days = 30; } } else { if(year%4==0 year%100!=0 || year%400==0) days = 29; else days = 28; } return days; } /** * function: 查询某月的天数 默认是当前年份 * @param month * @return */ public static int days(int month) { Calendar c = Calendar.getInstance(); c.setTime(new Date()); int year = c.get(Calendar.YEAR); return days(year, month); } }

创新互联凭借专业的设计团队扎实的技术支持、优质高效的服务意识和丰厚的资源优势,提供专业的网站策划、成都网站制作、做网站、网站优化、软件开发、网站改版等服务,在成都10余年的网站建设设计经验,为成都上千余家中小型企业策划设计了网站。

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中如何计算出两个日期之间相差多少天

思路就是根据它们相差的毫秒数除以每天的毫秒数(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+" 天");

}

运行结果如下:

扩展资料:

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官方API接口-Date

菜鸟教程-Java 日期时间

(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月。

扩展资料

其他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(days365){

System.out.println("你输入的已经超过了365天了");

}else{

System.out.println("第" + days + "天");

}

}

}

输出的结果如下:

month=12

day=31

第365天

参考资料:百度百科-Scanner

参考资料:百度百科-java

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 日期期间怎么计算
本文链接:http://pwwzsj.com/article/hgjhhp.html