一到面试题

lyszjs 2006-03-20 11:21:03
我这也有一道提,不知怎么写。
求两个日期之间的天数。输入的都是字符串形式,例如2004/03/21,2006/03/21。求两个之间的天数。最好把c和java的两种都写出来。
第一中方法可以系统函数。
第二种方法不能用系统函数。
int days(string date1,string date2)
我也知道写一点,就是可能写的不完整。这程序很长,面试的时候写这样的程序很费时间的呀,而且也没什么地方可以写的下,所以我看到这样的题目很烦,一般都不愿写。
...全文
395 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Net8Java 2006-03-23
  • 打赏
  • 举报
回复
上次看到报纸上说,很多这种公司都是自己公司请一些垃圾程序,做不出来的东西,就招聘,面试要别人做出来然后自己用上!
lyszjs 2006-03-23
  • 打赏
  • 举报
回复
都是笔试呀,那有什么机子给你用呀。
做鸡真好吃 2006-03-23
  • 打赏
  • 举报
回复
Mark~
yuzl32 2006-03-23
  • 打赏
  • 举报
回复
呵呵,又路过了..
liang8305 2006-03-23
  • 打赏
  • 举报
回复
难道这就是传说中的...骗算法?
yuzl32 2006-03-22
  • 打赏
  • 举报
回复
有JDK帮助我就会写,比如知道有Date相关的各种类,但是不记得单词全称怎么写.(哈哈,记性奇差,也比较懒去记),没有JDK帮助文档,就写不出来啦,
像这种情况,如果我去面试不就翘了?

求楼下指点..
: )
lyszjs 2006-03-21
  • 打赏
  • 举报
回复
这道题只是N道题中的一道。代码这么长,你们说面试的时候有时间写吗,就是抄一边也要很多时间呀。
fashchina 2006-03-20
  • 打赏
  • 举报
回复
public static void main(String[] args) throws Exception{
Calendar calendar=Calendar.getInstance();
String start="2004/03/21",end="2006/03/21";
calendar.setTime(getDateTime(start));
long s=calendar.getTimeInMillis();
calendar.setTime(getDateTime(end));
System.out.print("now data:"+(calendar.getTimeInMillis()-s)/(24*60*60*1000));
}
/**
* 得到时间
* @return
* @throws Exception
*/
public static java.util.Date getDateTime(String date) throws Exception {
SimpleDateFormat format=new SimpleDateFormat("yyyy/MM/dd");
try {
return format.parse(date);
} catch (ParseException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
throw new Exception("不是一个有效的时间格式");
}
}
discolt 2006-03-20
  • 打赏
  • 举报
回复
package test;

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


public class CalDays {
public static void main(String[] args) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
Date d1 = sdf.parse("2004/03/21");
Date d2 = sdf.parse("2006/03/21");
long days = (d2.getTime() - d1.getTime())/ (1000 * 60 * 60 * 24);
System.out.println(days);
}
}
treeroot 2006-03-20
  • 打赏
  • 举报
回复
代码也太长了吧
eefuwinter 2006-03-20
  • 打赏
  • 举报
回复
很经点的例子,并且考虑得很全面,版主加200分
believefym 2006-03-20
  • 打赏
  • 举报
回复
DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
Date d1 = df.parse("2004/03/21");
Date d2 = df.parse("....");

int days = (d2.getTime()-d1.getTime())/(3600*1000*24);
cxp841113 2006-03-20
  • 打赏
  • 举报
回复
正好这两天写了这个程序,是用c写的,现在发上来看看。
欢迎有更好的答案

/* ==================计算某年某一天到该年年初的天数=================== */

int days_of_year(int year,int mon,int day)
{
int days_of_mon[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
int i, days;

if (leap(year)==1) /* 如果是闰年,则这年的2月有29天 */
days_of_mon[1]=29;
else
days_of_mon[1]=28;

days = 0;

for ( i = 0; i < mon - 1; i++ )
days += days_of_mon[i];
days += day;
return days;
}
/*============================================================================*/



/*====================判断是否闰年.是返回true==========================*/
leap(int year)
{
if (( (year%4==0) && (year%100!=0) ) || (year%400==0) )
return 1;
}
/*============================================================================*/

main()
{ int i,days=0,day1=0,day2=0;
int StartYear,StartMon,StartDay;
int EndYear,EndMon,EndDay;

printf("Please input StartYear and EndYear!\n");
printf("StartYear:");
scanf("%d,%d,%d",&StartYear,&StartMon,&StartDay);
printf("EndYear:");
scanf("%d,%d,%d",&EndYear,&EndMon,&EndDay);


if(StartYear == EndYear) /* 同一年,先分别计算起始年和末年离该年最后一天的天数day1和day2,最后二者之差即得结果*/
{
if( leap(StartYear)==1 )
{
day1 =366-days_of_year(StartYear,StartMon,StartDay);
day2 =366-days_of_year(EndYear,EndMon,EndDay);
days =(day1-day2);
}
else
{
day1 =365-days_of_year(StartYear,StartMon,StartDay);
day2 =365-days_of_year(EndYear,EndMon,EndDay);
days +=(day1-day2);
}
printf("Result:%d",days);
getch();
return;
}

else /*不是同一年,则先计算起始年和末年的天数day1和day2,再算中间相隔整年的天数,最后二者相加即得结果*/
{
if ( leap(StartYear)==1 )

day1 += 366-days_of_year(StartYear,StartMon,StartDay);

else

day1 += 365-days_of_year(StartYear,StartMon,StartDay);

day2 += days_of_year(EndYear,EndMon,EndDay);

days +=(day1+day2);
}

for(i=(StartYear+1);i<EndYear;i++) /* 计算相隔整年的天数*/
{
if ( leap(i)==1 )
days += 366;
else
days += 365;
}

printf("Result:%d",days);
getch();

}

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧