ABAP: 今天是星期几?

看到这个问题, 第一反应是: 能不能找到相关的function module. ABAP的function module实在太方便, 有时候, 这样的方便反而妨碍我们思考...

其实有一个很简单的方法可以算出今天是星期几, 且看下面的代码:

DATA: lv_date TYPE sy-datum,
      lv_date2 TYPE sy-datum value '19700101',
      lv_days TYPE i.

DATA: lv_week TYPE i.

lv_date = sy-datum.

lv_days = lv_date - lv_date2 + 4.

lv_week = lv_days MOD 7.

WRITE: lv_week.

ABAP的时间类型转换为i类型会变成天数, 两个日期相减能得到之间相差的天数, 1970年1月1日是星期四, 所以我的公式加上了4, 最后对日数取余.

余数0: 星期天

余数1: 星期一

       ......


P.S. 谢谢Palm童鞋, 教我太多了


P.S. 相关的历史(摘自百度知道)


1970年1月1日

1969年8月,贝尔实验室的程序员肯汤普逊利用妻儿离开一个月的机会,开始着手创造一个全新的革命性的操作系统,他使用B编译语言在老旧的PDP-7机器上开发出了Unix的一个版本。随后,汤普逊和同事丹尼斯里奇改进了B语言,开发出了C语言,重写了UNIX,新版于1971年发布。

那时的计算机操作系统是32位,时间用32位有符号数表示,则可表示 68 年,
用32位无符号数表示,可表示136年。他们认为 以 1970年 为时间 原点 足够可以了。 因此,C 的 time 函数 就这么 定了,后来的 java 等也用它,微机也用它,工作站本来就是unix系统当然也用它。(今后若用64位机年限更没问题。)

1970年1月1日 算 UNIX 和 C语言 生日。

由于主流计算机和操作系统都用它,其他仪器,手机等也就用它了。
 
 
闰年
闰年(Leap Year)是为了弥补因人为历法规定造成的年度天数与地球实际公转周期的时间差而设立的。
地球绕日运行周期为365天5小时48分46秒(合365.24219天),即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,每四年累积约一天,把这一天加于2月末(即2月29日),使当年时间长度变为366日,这一年就为闰年。 需要注意的是,现在的公历是根据罗马人的"儒略历"改编而得。由于当时没有了解到每年要多算出0.0078天的问题,从公元前46年,到16世纪,一共累计多出了10天。为此,当时的教皇格雷果里十三世,将1582年10月5日人为规定为10月15日。并开始了新闰年规定。即规定公历年份是整百数的,必须是400的倍数才是闰年,不是400的倍数的就是平年。比如,1700年、1800年和1900年为平年,2000年为闰年。此后,平均每年长度为365.2425天,约4年出现1天的偏差。按照每四年一个闰年计算,平均每年就要多算出0.0078天,经过四百年就会多出大约3天来,因此,每四百年中要减少三个闰年。闰年的计算,归结起来就是通常说的:四年一闰;百年不闰,四百年再闰。

 
 
 
 



你可能感兴趣的:(get,day,星期几)