#P1446. Moscow Time
Moscow Time
描述
在电子邮件中,使用以下日期和时间设置格式:
EDATE::=星期几, 月份中的日期 月份 年份 时间 时区
这里,EDATE 是日期和时间格式的名称,“::=” 右边的文本定义了在此格式中日期和时间的书写方式。下面给出了 EDATE 各字段的描述:
星期几
一周中某一天的名称。可能的值为:MON(星期一)、TUE(星期二)、WED(星期三)、THU(星期四)、FRI(星期五)、SAT(星期六)、SUN(星期日)。名称后面跟着一个 “,” 字符(逗号)。
月份中的日期
一个月中的某一天。由两位十进制数字表示。
月份
月份的名称。可能的值为:JAN(一月)、FEB(二月)、MAR(三月)、APR(四月)、MAY(五月)、JUN(六月)、JUL(七月)、AUG(八月)、SEP(九月)、OCT(十月)、NOV(十一月)、DEC(十二月)。
年份
由两位或四位十进制数字表示。如果年份由两位数字表示,则假定这是 20 世纪的年份。例如,74 和 1974 都表示 1974 年。
时间
本地时间格式为 小时:分钟:秒,其中小时、分钟和秒都由两位十进制数字组成。时间范围在 00:00:00 到 23:59:59 之间。
时区
本地时间与格林威治标准时间的偏移量。由差值符号 “+” 或 “-” 以及四位数字序列表示。前两位数字表示小时数,后两位数字表示分钟数的偏移值。差值的绝对值不超过 24 小时。时区也可以用以下名称之一表示:
名称 数字值 UT -0000 GMT -0000 EDT -0400 CDT -0500 MDT -0600 PDT -0700
EDATE 的每两个相邻字段之间恰好由一个空格分隔。星期几、月份和时区的名称都用大写字母书写。例如,圣彼得堡比赛日上午 10 点可以表示为:
TUE, 03 DEC 96 10:00:00 +0300
编写一个程序,将给定的 EDATE 格式的日期和时间转换为莫斯科时区对应的日期和时间。不考虑所谓的 “夏令时”。你的程序应该基于给定的星期几和时区的预定义正确性。
附注
莫斯科时间比格林威治标准时间晚 3 个小时(时区为 +0300)
月份:一月、三月、五月、七月、八月、十月和十二月有 31 天。月份:四月、六月、九月和十一月有 30 天。通常情况下,二月有 28 天,除非是闰年(29 天)。
如果满足以下两个条件之一,则该年份为闰年:
- 其年份能被 4 整除且不能被 100 整除;
- 其年份能被 400 整除。
例如,1996 年和 2000 年是闰年,而 1900 年和 1997 年不是。
输入
输入的第一行包含 EDATE 格式的日期和时间。输入数据中允许的最小年份是 0001,最大年份是 9998。输入的 EDATE 字符串不包含前导和尾随空格。
输出
输出必须包含一行,以 EDATE 格式表示莫斯科时区的日期和时间。在输出的 EDATE 字符串中,年份可以用两种允许的方式之一表示。输出字符串不应包含前导和尾随空格。
输入数据 1
SUN, 03 DEC 1996 09:10:35 GMT
输出数据 1
SUN, 03 DEC 1996 12:10:35 +0300
来源
1996 年东北欧地区