如何得到日期在当年的第几天,即日序
各位大侠,本人读取一个文本文件,文本文件中每个记录的数据项依次为 年、月 、日,共有50年数据的。想输出的文本中每个记录的数据依次为年、月、日、日序。因为平年和闰年的年数是不同的,一个为365天,一个为366天。图片中的前三行为输入的文本,希望输出的文本中加上最后一行日序。自己编了几次,总是搞不定,哪位大侠知道如何解决这个问题呢?Program fcode_demo
Implicit none
integer :: y , m , d , t
Open(12,File="in.txt")
Open(13,File="out.txt")
Do
read( 12 , * , ioStat = t ) y , m , d
if ( t/= 0 ) exit
write( 13 , * ) y , m , d , DaysInYear( y , m , d )
End Do
Close(12)
Close(13)
contains
Integer Function DaysInYear( year , mon , day )
Integer :: year , mon , day
Integer :: DaysInMonth(12) =
if ( ( (MOD(year,4)==0).and.(MOD(year,100)/=0) ) .or. (mod(year,400)==0) ) then
DaysInMonth(2) = 29
else
DaysInMonth(2) = 28
end if
DaysInYear = sum( DaysInMonth(:mon-1) ) + day
End Function DaysInYear
End Program fcode_demo :-hug:太感谢kyra了,琢磨了2天也没有得到正确的结果,你几分钟就搞定了,高手啊。感觉fortran真是博大精深,以后要多多请教哈。:-lol DaysInYear = sum( DaysInMonth(:mon-1) ) +day
这一句中 sum( DaysInMonth(:mon-1) )是表示某月的天数,后面的day是什么意思呢?可否说说基本思路呢? year 是 年
mon 是 月
day是 日
一年中多少天,就是前 mon-1 个月的天数,加上 日。
比如 3月 5日,就是前2个月的天数,加上5。
明白了,谢谢指导。
页:
[1]