计算一年中的第几天java_计算一年中的第几天

4

Python3 import datetime

while True:

try:

y, m, d = map(int, input().split())

date = datetime.datetime(y, m, d)

print(date.strftime("%j").lstrip("0"))

except:

break

需要注意的是: datetime的参数全为整数。

在输出是第几天时,前面可能带有0,所以要把前面的0去掉。

可以写成一行: import datetime

while True:

try:

print(datetime.datetime(*map(int, input().split())).strftime("%j").lstrip("0"))

except:

break

发表于 2019-02-23 09:32:39

回复(0)

4

import java.util.Scanner;

/**

* 计算一年中的第几天

* 今年的第几天?

* 输入年、月、日,计算该天是本年的第几天。

* 输入描述:

* 包括三个整数年(1<=Y<=3000)、月(1<=M<=12)、日(1<=D<=31)。

* 输出描述:

* 输入可能有多组测试数据,对于每一组测试数据,

* 输出一个整数,代表Input中的年、月、日对应本年的第几天。

* 输入例子1:

* 1990 9 20

* 2000 5 1

* 输出例子1:

* 263

* 122

*

* @author shijiacheng

* @date 2018/2/21

*/

public class DayOfYeafSolution {

public static void main(String[] args){

int[] days = {31,28,31,30,31,30,31,31,30,31,30,31};

Scanner sc = new Scanner(System.in);

while (sc.hasNextInt()){

int Y = sc.nextInt();

int M = sc.nextInt();

int D = sc.nextInt();

if (isLeapYear(Y)){

days[1] = days[1]+1;

}

int day = 0;

for (int i = 1; i < M; i++) {

day+=days[i-1];

}

day +=D;

System.out.println(day);

}

}

/**

* 判断是否是闰年

* @param year

* @return

*/

public static boolean isLeapYear(int year){

if (year%4==0&&year%100!=0){

return true;

}else if (year%400==0){

return true;

}

return false;

}

}

发表于 2018-02-21 15:09:49

回复(0)

2

先判断闰年后,然后用vector动态创建数组,直接相加就好。

#include

#include

using namespace std;

int main(void)

{

int year, month, day;

while (cin >> year >> month >> day)

{

int count = 0;

int Feb = 28;

if (year % 4 == 0 || year % 400 == 0)

{

Feb = 29;

}

vector monthcount = { 0,31,Feb,31,30,31,30,31,31,30,31,30,31 };

for (int i = 0; i < month; i++)

{

count += monthcount[i];

}

count += day;

cout << count << endl;

}

return 0;

}

发表于 2019-04-29 12:02:47

回复(0)

1

链接:https://www.nowcoder.com/questionTerminal/178aa3dafb144bb8b0445edb5e9b812a

来源:牛客网

知识点:

1.瑞年的判断:若year%400==0 or (year%100!=0)&&(year%4==0),则该年为瑞年,否则为平年。

C++代码实现:

#include

using namespace std;

int days(int year,int month,int day);

int main()

{

int year,month,day;

while(cin>>year>>month>>day)

{

cout<

}

return 0;

}

int days(int year,int month,int day)

{

int month_day[12]={31,28,31,30,31,30,31,31,30,31,30,31};

if((year%400==0)||((year%4==0)&&(year%100!=0))){

month_day[1]=29;

}

int sumday=day;

for(int i=0;i

{

sumday+=month_day[i];

}

return sumday;

}

发表于 2019-09-09 09:51:19

回复(0)

1

傻瓜解法

#include

using namespace std;

int main()

{

int d1[12]={31,29,31,30,31,30,31,31,30,31,30,31};

int d2[12]={31,28,31,30,31,30,31,31,30,31,30,31};

int year,month,day;

while(cin>>year>>month>>day)

{

int num=0;

if((year % 4 == 0 && year % 100 != 0)||(year%400 ==0))

{

for(int i=0;i

{

num += d1[i];

}

num=num+day;

cout<

}

else

{

for(int i=0;i

{

num += d2[i];

}

num=num+day;

cout<

}

}

return 0;

}

ps:

请教一下,请看到的大神解答一下,为什么下面这个不行

#include

using namespace std;

int main()

{

int d1[12]={31,29,31,30,31,30,31,31,30,31,30,31};

int d2[12]={31,28,31,30,31,30,31,31,30,31,30,31};

while(cin)

{

int year,month,day;

int num=0;

cin>>year>>month>>day;

if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

{

for(int i=0;i

{

num += d1[i];

}

num=num+day;

}

else

{

for(int i=0;i

{

num += d2[i];

}

num=num+day;

}

cout<

}

return 0;

}

编辑于 2019-05-17 21:32:08

回复(0)

1

#include

using namespace std;

int main()

{ int Y,M,D,d; int m[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; while(cin>>Y>>M>>D){ d = D; for(int i=0;i

}

发表于 2019-02-17 02:41:09

回复(0)

1

import java.util.*;

public class Main {

private static final int[] M_DAYS = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

while (sc.hasNext()) {

int year = sc.nextInt();

int month = sc.nextInt();

int day = sc.nextInt();

if ( (year % 400 == 0) || (year % 4 == 0 && year % 100 !=0) ) {

M_DAYS[2] = 29;

}

int ans = 0;

for (int i=1; i

ans += M_DAYS[i];

}

ans += day;

System.out.println(ans);

M_DAYS[2] = 28;

}

return;

}

}

发表于 2019-01-24 17:05:54

回复(0)

1

import java.util.Scanner;

public class test2 {

public static void main(String[] args){

int D=0;

int [] date={31,28,31,30,31,30,31,31,30,31,30,31};

Scanner sc=new Scanner(System.in);

System.out.println("请输入年月日:");

while(sc.hasNextInt()){

int year=sc.nextInt();

int month=sc.nextInt();

int day=sc.nextInt();

if(year%400==0||year%100==0){

date[1]=29;}

for(int i=0;i

D+=date[i];}

System.out.print("该天是本年的第"+(D+day)+"天");

}

}

发表于 2018-03-12 16:54:59

回复(0)

0

importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Calendar; importjava.util.Date; importjava.util.Scanner; public classTestDate { public static voidmain(String[] argvs) throwsParseException {

Scanner sc=newScanner(System.in); while(sc.hasNext()){

String dateStr=sc.nextLine();

SimpleDateFormat sdf=newSimpleDateFormat("yyyy MM dd");

Date date= null;

date=sdf.parse(dateStr);

Calendar calendar = Calendar.getInstance();

calendar.setTime(date); intindex=calendar.get(Calendar.DAY_OF_YEAR);

System.out.println(index);

}

}

}

发表于 2020-03-12 09:38:37

回复(0)

0

使用Date API Calendar SimpleDateFormat 代码量少,好做

发表于 2019-07-28 22:21:56

回复(0)

0

#include

#include

int main()

{       int year,month,day;

int sum=0;

int flag = 0;

int days = 0;

scanf("%d %d %d",&year,&month,&day);

if(year%4==0)

{

flag=1;

if(year%100==0&&year%400==0)

{flag=1;}else   {flag = 0;}

}

for(int i=1;i

{

if((1==i)||(3==i)||(5==i)||(7==i)||(8==i)||(10==i)||(12==i))

{

days = 31;

sum = sum +days;

continue;

}else if((4==i)||(6==i)||(9==i)||(11==i))

{

days = 30;

sum = sum +days;

continue;

}else

{

switch (flag)

{

case 0:

sum=sum+28;  break;

case 1:

sum=sum+29; break;

default:

break;

}

}

sum = sum +day;

}

printf("%d\n",sum);

return 0;

}

初来乍到,新手小白一般写法,请多指教

发表于 2019-06-27 09:23:03

回复(0)

0

import java.util.Scanner;

publicclassYmd {

Scanner i=new Scanner(System.in);

int Y=i.nextInt();

int M=i.nextInt();

int D=i.nextInt();

int k;

public void jisuan() {

int s;

if((Y/400)%2==0||(Y/400)%2==1) {

s=29;

}

else {

s=28;

}

k=s+D+(M-2)*30+(M-1)/2;

System.out.println(k);

}

public static void main(String[]args) {

Ymd test=new Ymd();

test.jisuan();

}

}

发表于 2019-05-27 19:54:18

回复(0)

0

#include

using namespace std;

int num_run[12] = {31,29,31,30,31,30,31,31,30,31,30,31};

int num_norun[12] = {31,28,31,30,31,30,31,31,30,31,30,31};

int main()

{

int year,month,day;

while(cin >> year >>month >> day)

{

int daynum = 0;

if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)

{

for(int i = 0; i < month - 1; ++i)

daynum += num_run[i];

daynum += day;

}

else{

for(int i = 0; i < month - 1; ++i)

daynum += num_norun[i];

daynum += day;

}

cout << daynum << endl;

}

}

发表于 2019-05-16 11:03:51

回复(0)

0

import java.util.Scanner;

public class Main {

public static void main(String[] args){

Scanner sc=new Scanner(System.in);

while(sc.hasNext()){

int[] arrs=new int[3];

for(int i=0;i<3;i++){

arrs[i]=sc.nextInt();

}

System.out.println(findDay(arrs));

}

}

private static int findDay(int[] arrs) {

int sum=0;

int n=arrs[1]-1;

while(n>0){

if(n==1||n==3||n==5||n==7||n==8||n==10||n==12){

sum+=31;

}else if(n==2){

sum+=isRun(arrs[0])?29:28;

}else{

sum+=30;

}

n--;

}

sum+=arrs[2];

return sum;

}

private static boolean isRun(int i) {

if(i%400==0){

return true;

}

if(i%4==0&&i%100!=0){

return true;

}

return false;

}

}

发表于 2019-05-02 20:45:00

回复(0)

0

#include

int main(void)

{

int year = 0, month = 0, day = 0, sum = 0;

int month_num[] = {31,28,31,30,31,30,31,31,30,31,30,31};

int i = 0;

while(scanf("%d%d%d",&year, &month, &day) != EOF)

{

for(i=0; i

{

sum += month_num[i];

}

sum += day;

if(month>=3)

{

if(((year%4==0)&&(year%100!=0)) || (year%400==0))

{

sum++;

}

}

printf("%d\n",sum);

}

}

发表于 2019-05-02 18:42:19

回复(0)

0

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

int main()

{

int year,month,day;

while(cin>>year>>month>>day){

map Month;

Month[1]=31;

Month[2]=(year%4==0)?29:28;

Month[3]=31;

Month[4]=30;

Month[5]=31;

Month[6]=30;

Month[7]=31;

Month[8]=31;

Month[9]=30;

Month[10]=31;

Month[11]=30;

Month[12]=31;

if(1==month){

cout<

}else{

int cnt=0;

for(int i=1;i

cnt+=Month[i];

}

cout<

}

}

return 0;

}

发表于 2019-04-27 09:29:48

回复(0)

0

最笨的方法了,楼市几位大佬先创建了需要的数据,然后直接查找使用,我这个写的每次都要执行indexOf,很耗时

发表于 2019-04-25 16:04:48

回复(0)

0

#include

using namespace std;

int main()

{

int base[2][12]={{  0, 31, 60, 91,121,152,182,213,244,274,305,335},

{  0, 31, 59, 90,120,151,181,212,243,273,304,334}};

int Y, M, D;

int flag;

while(cin >> Y >> M >> D)

{

if(((Y%4 == 0)&&(Y%100 != 0))||(Y%400== 0))//闰年

flag = 0;

else

flag = 1;

cout << base[flag][M-1] + D;

}

return 0;

}

发表于 2019-04-09 21:56:24

回复(0)

0

import java.util.*;

public class Main8{

public static void main(String[] args){

Scanner input = new Scanner(System.in);

int Y = input.nextInt();

int M = input.nextInt();

int D = input.nextInt();

int[] Yes = {31,29,31,30,31,30,31,31,30,31,30,31};

int[] No = {31,28,31,30,31,30,31,31,30,31,30,31};

int total = 0;

if((Y%4==0&&Y%100!=0)||Y%400 == 0){

for(int i =0;i

total = total+Yes[i];

}

total +=D;

}

else{

for(int i =0;i

total = total+No[i];

}

total +=D;

}

System.out.println(total);

}

}

发表于 2019-03-27 20:03:37

回复(0)

0

//调用jdk1.8新特性

import java.time.LocalDateTime;

import java.util.*;

public class Main {

public static void main(String[] args) {

Scanner cin = new Scanner(System.in);

while (cin.hasNextInt()) {

int year = cin.nextInt();

int month = cin.nextInt();

int day = cin.nextInt();

LocalDateTime time = LocalDateTime.of(year,month,day,0,0);

System.out.println(time.getDayOfYear());

}

}

}

发表于 2019-03-24 23:23:10

回复(0)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值