比如今天是2008年12月1日,求1500天之后的年月日星期。
其中1、3、5、7、8、10、12月有31天
4、6、9、11月有30天
2月是28日天
4年1回的闰年,也就是2月有29天
全部包括在内
不好意思只有5分的积分 求大家帮忙
求当日之后的n天后的年月日星期
答案:4 悬赏:50 手机版
解决时间 2021-02-23 21:46
- 提问者网友:愿为果
- 2021-02-23 11:18
最佳答案
- 五星知识达人网友:舊物识亽
- 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日 星期三
//: 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);
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯