永发信息网

求当日之后的n天后的年月日星期

答案:4  悬赏:50  手机版
解决时间 2021-02-23 21:46
  • 提问者网友:愿为果
  • 2021-02-23 11:18
比如今天是2008年12月1日,求1500天之后的年月日星期。
其中1、3、5、7、8、10、12月有31天
4、6、9、11月有30天
2月是28日天
4年1回的闰年,也就是2月有29天
全部包括在内
不好意思只有5分的积分 求大家帮忙
最佳答案
  • 五星知识达人网友:舊物识亽
  • 2021-02-23 11:24
//没关系,5分也给你解决问题,呵呵
//: D.java

import java.text.SimpleDateFormat;
import java.util.*;

public class D {
private static SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd E",Locale.CHINA);
private static SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd");

private final static Calendar cd = Calendar.getInstance();
public static void main(String[] args) throws Exception{
printDateInfo("2008-12-01",1500);
}

private static void printDateInfo(String dateStr,int days)throws Exception{
Date parsedDate = parser.parse(dateStr);
cd.setTime(parsedDate);
cd.add(Calendar.DATE,days);
Date date = cd.getTime();
String localeStr = formater.format(date);
System.out.println(dateStr+"的"+days+"天后是: "+localeStr);

//数据求法:

//年
int year = cd.get(Calendar.YEAR);
//月,规则是这样的--1月=0,2月=1...12月=11
int month = cd.get(Calendar.MONTH);
//日
int day = cd.get(Calendar.DATE);
//星期几,规则是这样的--星期天=1,星期一=2...星期六=7
int weekday = cd.get(Calendar.DAY_OF_WEEK);

//实际上你可以用一个星期的数组来搞这个比较好
String[] week = {"日","一","二","三","四","五","六",};
String weekdaystr = week[weekday-1];
System.out.println(dateStr+"的"+days+"天后的确是: "+year+"年"+(month+1)+"月"+day+"日 星期"+weekdaystr);
}
}
---------------------------------------------------
//输出结果:
2008-12-01的1500天后是: 2013-01-09 星期三
2008-12-01的1500天后的确是: 2013年1月9日 星期三
全部回答
  • 1楼网友:渡鹤影
  • 2021-02-23 13:59
另一种实现:转换成毫秒数 import java.text.SimpleDateFormat; import java.util.Date; public class TestDate { public static long NUM = 1500; public static void main(String[] args) { Date d = new Date(); long todayTime = d.getTime(); //获得1970年1月1日0:00距离今天的毫秒数 long totalTime = todayTime + NUM*24*60*60*1000; //得到 指定日期 距离1970年1月1日0:00的毫秒数 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss E"); String dateStr = sdf.format(totalTime); //得到一个日期的字符串 System.out.println(dateStr); } }
  • 2楼网友:孤老序
  • 2021-02-23 12:33
public class Test { public static void main(String[] args) { int year = 2008; int month = 12; int date = 1; int addDay = 1500; Calendar cl = Calendar.getInstance(); cl.set(year, month - 1, date); cl.add(Calendar.DATE, addDay); System.out.println(getWeek(cl.get(Calendar.DAY_OF_WEEK))); } private static String getWeek(int key) { switch (key) { case 1: return "星期日"; case 2: return "星期一"; case 3: return "星期二"; case 4: return "星期三"; case 5: return "星期四"; case 6: return "星期五"; case 7: return "星期六"; } return ""; } }
  • 3楼网友:廢物販賣機
  • 2021-02-23 12:11
#include  typedef struct date { int year; int month; int day; }date; int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; int isleapyear(int year); void listdate(date now, int diff); void main() { date now; int diff; printf("输入日期(yyyy-mm-dd): "); scanf("%d-%d-%d", &now.year, &now.month, &now.day); printf("输入相隔天数: "); scanf("%d", &diff); listdate(now, diff); } int isleapyear(int year) { return ((year%400==0) || (year%4==0 && year%100!=0)) ? 1 : 0; } void listdate(date now, int diff) { date d1; d1.year = now.year; d1.month = now.month; d1.day = now.day + diff; if(d1.day > 0) { while(d1.day > days[d1.month-1]) { d1.day -= days[d1.month-1] + (d1.month==2 && isleapyear(d1.year)); d1.month++; if(d1.month > 12) { d1.month = 1; d1.year++; } } } else if(d1.day < 0) { while(d1.day <= 0) { d1.month--; if(d1.month <= 0) { d1.month = 12; d1.year--; } d1.day += days[d1.month-1] + (d1.month==2 && isleapyear(d1.year)); } } printf("%d-%d-%d\n", d1.year, d1.month, d1.day); }
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯