简单的Java题目,关于年份、时间、日期的计算。求助!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简单的Java题目,关于年份、时间、日期的计算。求助!!!相关的知识,希望对你有一定的参考价值。

输入两个日期,判断两个日期的前后关系以及两个日期之间的间隔天数。
输入格式:1991.01.01
输出格式:1991年1月1日比2012年12月12日早X天

给你代码

import java.text.SimpleDateFormat;
import java.util.Calendar;

public class TimeTest

static long CONST_DAY = 3600 * 1000 * 24;

public static void main(String[] args) throws Exception
SimpleDateFormat input = new SimpleDateFormat("yyyy.MM.dd");
SimpleDateFormat output = new SimpleDateFormat("yyyy年MM月dd日");
// 输入格式:1991.01.01
// 输出格式:1991年1月1日比2012年12月12日早X天
String strBefore = "1991.01.01";

Calendar before = Calendar.getInstance();
Calendar after = Calendar.getInstance();
before.setTime(input.parse(strBefore));

int interval = (int) ((after.getTimeInMillis() - before
.getTimeInMillis()) / CONST_DAY);
System.out.println(output.format(before.getTime()) + "比"
+ output.format(after.getTime()) + "早" + interval + "天");

追问

看不懂,能解释一下吗?我刚学的,才学到接口。

追答

SimpleDateFormat
是个日期格式的类,可以按某个格式将字符串转化为日期,也可以将日期转化为某个格式的字符串。
SimpleDateFormat .parse(String) 按某个格式将字符串转化为日期
SimpleDateFormat .format(new Date()) 将日期转化为某个格式的字符串

Calendar 就是日期类,
Date由于一些原因,有很多方法,官方不推荐使用,推荐使用Calendar

after.getTimeInMillis() 得到的是当前时间距离 1970.1.1 零时的毫秒数。

CONST_DAY = 3600 * 1000 * 24;

这是一天的毫秒数
其它的基本就是数学计算了。

参考技术A public static Date getDate(String sDate, String dateFormate)
SimpleDateFormat sdf = new SimpleDateFormat(dateFormate);
ParsePosition pos = new ParsePosition(0);
return sdf.parse(sDate, pos);


Date date1 = XXX.getDate("1991.01.01","yyyy.MM.dd");
Date date2 = XXX.getDate("2012.12.12","yyyy.MM.dd");

int days = (date2.getTime()-date1.getTime())/(24*60*60*1000)
参考技术B 直接调用Calendar的方法 参考技术C 哇,楼上的答案已经很精彩了追问

看不懂,能解释一下算法还有那个类吗?

追答

其实比较时间就是用一个类,设置两参数,传参比较就可以了。你还可以看一下http://zhidao.baidu.com/question/210778581.html,这个好像也是实现这个功能吧,理解java编程就很容易理解这个了

参考技术D awsewrreewR

JAVA中怎么实现,根据用户输入的年份和月份得到当月第1天(该月1号)

请高人指教,最好是把代码一起发出来,谢谢了。。。跪求,急!!

参考技术A 抽了点时间写了些代码:给你看看是不是你想要的,你是初学者把,俺给你加些注释 package yjh.action; import java.text.SimpleDateFormat; //定制日期格式的类 import java.util.Calendar; //日历类 import java.util.Date; //当前日期和时间的Data类 import java.util.Scanner;//读取用户输入的类 public class DataCounter public int getDay(String strDate) throws Exception int day = 0; //设定一个特定的日期格式,例如2009-01-03 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd"); //把用户输入的字符串转化为日期和时间的格式 Date date = format.parse(strDate); //返回系统的当前状态时间 Calendar cal = Calendar.getInstance(); //用给定的 date 设置此 cal cal.setTime(date); //返回年月日中的天数 day = cal.get(cal.DAY_OF_YEAR); return day; public static void main(String args[]) try System.out.println("请输入日期,格式如:2009-03-25:"); //读取用户的输入 Scanner scan = new Scanner(System.in); String str = scan.next(); int day; day = new DataCounter().getDay(str); System.out.println(str + "是" + str.subSequence(0, 4) + "年的第" + day + "天"); catch (Exception e) // TODO 自动生成 catch 块 e.printStackTrace(); 本回答被提问者采纳

以上是关于简单的Java题目,关于年份、时间、日期的计算。求助!!!的主要内容,如果未能解决你的问题,请参考以下文章

求根据入职日期计算工龄的公式,并附带解释。

java实现两个日期相减得到中间的年份和月份

java计算年龄

时间计算

Java语言,已知一个年月日的日期,获取该日期是这一年的多少天...........

JAVA中怎么实现,根据用户输入的年份和月份得到当月第1天(该月1号)