JAVA编写从屏幕上输入一个日期,计算出该日期是该年的第几天

JAVA编写从屏幕上输入一个日期,计算出该日期是该年的第几天得考虑闰年日期是否合法等... JAVA编写从屏幕上输入一个日期,计算出该日期是该年的第几天
得考虑闰年
日期是否合法等
展开
 我来答
racnow
2009-10-14 · 超过36用户采纳过TA的回答
知道答主
回答量:127
采纳率:0%
帮助的人:0
展开全部
其实Java API就带这个方法:
calendar.get(GregorianCalendar.DAY_OF_YEAR);

这个是我写的:
import static java.lang.System.out;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.GregorianCalendar;

public class DayCounter {

private static final long DAY_IN_MILL_SECOND = 24 * 60 * 60 * 1000L;

private Date zeroOClock(Date date) {
if (date == null)
throw new IllegalStateException("date can't be null");
GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(date);
calendar.set(GregorianCalendar.HOUR_OF_DAY, 0);
calendar.set(GregorianCalendar.MINUTE, 0);
calendar.set(GregorianCalendar.SECOND, 0);
calendar.set(GregorianCalendar.MILLISECOND, 0);
return calendar.getTime();
}

private int daysBetween(Date end, Date start) {
long millSecondsBetween = Math.abs(zeroOClock(end).getTime()
- zeroOClock(start).getTime());
return (int) (millSecondsBetween / DAY_IN_MILL_SECOND);
}

public int dayOfYear(Date date) {
GregorianCalendar start = new GregorianCalendar();
start.setTime(date);
start.set(GregorianCalendar.MONTH, 0);
start.set(GregorianCalendar.DAY_OF_MONTH, 1);
return daysBetween(date, start.getTime()) + 1;
}

public int dayOfYear(String date) {
try {
return dayOfYear(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
.parse(date));
} catch (ParseException e) {
throw new RuntimeException("error date format:" + date);
}
}

/**
* Test
*
* @throws ParseException
*/
public static void main(String[] args) throws ParseException {
SimpleDateFormat dateFormate = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
DayCounter dayCounter = new DayCounter();

GregorianCalendar calendar = new GregorianCalendar();
calendar.setTime(dateFormate.parse("2009-01-01 15:20:00"));
out.println(dayCounter.dayOfYear(calendar.getTime()));
out.println(dayCounter.dayOfYear("2009-01-01 15:20:00"));
out.println(calendar.get(GregorianCalendar.DAY_OF_YEAR));

calendar.setTime(dateFormate.parse("2009-01-31 15:20:00"));
out.println(dayCounter.dayOfYear(calendar.getTime()));
out.println(dayCounter.dayOfYear("2009-01-31 15:20:00"));
out.println(calendar.get(GregorianCalendar.DAY_OF_YEAR));

calendar.setTime(dateFormate.parse("2009-02-1 15:20:00"));
out.println(dayCounter.dayOfYear(calendar.getTime()));
out.println(dayCounter.dayOfYear("2009-02-1 15:20:00"));
out.println(calendar.get(GregorianCalendar.DAY_OF_YEAR));

calendar.setTime(dateFormate.parse("2009-03-1 15:20:00"));
out.println(dayCounter.dayOfYear(calendar.getTime()));
out.println(dayCounter.dayOfYear("2009-03-1 15:20:00"));
out.println(calendar.get(GregorianCalendar.DAY_OF_YEAR));
}
}

最后:
如果想学编程的话多动手写写吧,要不永远也不会。
tenderghost
推荐于2018-05-14 · TA获得超过320个赞
知道小有建树答主
回答量:532
采纳率:0%
帮助的人:0
展开全部
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date date = df.parse("2009-01-02");
Calendar c = Calendar.getInstance();
c.setTime(date);
System.out.println(c.get(Calendar.DAY_OF_YEAR));
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kevinyao1111
2009-10-14 · TA获得超过286个赞
知道小有建树答主
回答量:239
采纳率:0%
帮助的人:271万
展开全部
public int orderDate(Date date){
int dateSum = 0;
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
String dateStr = format.format(date);
System.out.println(dateStr);
int year = Integer.valueOf(dateStr.substring(0,4));
int month = Integer.valueOf(dateStr.substring(5,7));
int day = Integer.valueOf(dateStr.substring(8,10));
for (int i = 1; i < month; i++){
switch(i){
case 1: case 3: case 5: case 7: case 8: case 10: case 12:dateSum += 31; break;
case 4: case 6: case 9: case 11:dateSum += 30; break;
case 2:
if(((year % 4 == 0) & (year % 100 != 0)) | (year % 400 == 0))
dateSum += 29;
else dateSum += 28;
}
}

return dateSum = dateSum + day;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
骑着蜗牛来摆渡
2009-10-14 · TA获得超过1267个赞
知道小有建树答主
回答量:339
采纳率:0%
帮助的人:394万
展开全部
public int orderDate( Date l_endDate ){
DateFormat df = new SimpleDateFormat("yyyyMMdd");
Calendar firstDay = Calendar.getInstance();
try {
firstDay.setTime(df.parse(df.format(date).substring(0,4)+"0101"));
} catch (ParseException e) {
e.printStackTrace();
}
long l_startTime = firstDay.getTimeInMillis();
long l_endTime = date.getTime();
long betweenDays = (long) ( ( l_endTime - l_startTime ) / ( 1000 * 60 * 60 * 24 ) );
return betweenDays;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
宝贝馨雅babyxy
2009-10-14 · TA获得超过401个赞
知道答主
回答量:172
采纳率:0%
帮助的人:59.2万
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式