Fortran Coder

查看: 11362|回复: 5
打印 上一主题 下一主题

[数值问题] 如何得到日期在当年的第几天,即日序

[复制链接]

9

帖子

1

主题

0

精华

入门

F 币
76 元
贡献
33 点
跳转到指定楼层
楼主
发表于 2017-12-28 10:29:16 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
各位大侠,本人读取一个文本文件,文本文件中每个记录的数据项依次为 年、月 、日,共有50年数据的。想输出的文本中每个记录的数据依次为年、月、日、日序。因为平年和闰年的年数是不同的,一个为365天,一个为366天。图片中的前三行为输入的文本,希望输出的文本中加上最后一行日序。自己编了几次,总是搞不定,哪位大侠知道如何解决这个问题呢?

JB{@2H6E)$A4O`~TW~@AIO4.png (11.47 KB, 下载次数: 298)

JB{@2H6E)$A4O`~TW~@AIO4.png
分享到:  微信微信
收藏收藏 点赞点赞 点踩点踩

260

帖子

0

主题

0

精华

版主

World Analyser

F 币
722 元
贡献
512 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
沙发
发表于 2017-12-28 12:37:30 | 只看该作者
[Fortran] 纯文本查看 复制代码
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) = [31,28,31,30,31,30,31,31,30,31,30,31]
    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

评分

参与人数 2F 币 +13 贡献 +13 收起 理由
潜龙勿用 + 10 + 10 很给力!
fcode + 3 + 3

查看全部评分

9

帖子

1

主题

0

精华

入门

F 币
76 元
贡献
33 点
板凳
 楼主| 发表于 2017-12-28 14:44:08 | 只看该作者
太感谢kyra了,琢磨了2天也没有得到正确的结果,你几分钟就搞定了,高手啊。感觉fortran真是博大精深,以后要多多请教哈。

9

帖子

1

主题

0

精华

入门

F 币
76 元
贡献
33 点
地板
 楼主| 发表于 2017-12-28 15:22:55 | 只看该作者
DaysInYear = sum( DaysInMonth(:mon-1) ) +day
这一句中 sum( DaysInMonth(:mon-1) )是表示某月的天数,后面的day是什么意思呢?可否说说基本思路呢?

260

帖子

0

主题

0

精华

版主

World Analyser

F 币
722 元
贡献
512 点

新人勋章美女勋章元老勋章热心勋章规矩勋章管理勋章

QQ
5#
发表于 2017-12-28 15:26:54 | 只看该作者
year 是 年
mon 是 月
day  是 日
一年中多少天,就是前 mon-1 个月的天数,加上 日。
比如 3月 5日,就是前2个月的天数,加上5。

9

帖子

1

主题

0

精华

入门

F 币
76 元
贡献
33 点
6#
 楼主| 发表于 2017-12-28 16:49:38 | 只看该作者
明白了,谢谢指导。
您需要登录后才可以回帖 登录 | 极速注册

本版积分规则

捐赠本站|Archiver|关于我们 About Us|小黑屋|Fcode ( 京ICP备18005632-2号 )

GMT+8, 2024-12-26 17:33

Powered by Tencent X3.4

© 2013-2024 Tencent

快速回复 返回顶部 返回列表