云服务器价格_云数据库_云主机【优惠】最新活动-搜集站云资讯

云主机_福建省住房建设厅网站_怎么申请

小七 141 0

热云数据_什么是_人工智能与大数据

开发人员经常需要在工作中包含与日期相关的代码。我遇到了一些"有趣的"和"创造性的"方法,这些方法在某些条件下可能有效,但确实存在风险。让我们用ABAP谈约会吧。我会解释他们是如何工作的,常见的错误和我的建议一致处理…请让我知道如果你有其他建议!

(这是我不久前在LinkedIn上发布的一篇博文,但显然这是它的所在。)

基础知识

有一个预定义的数据类型DATS,您可以像预期的那样声明它:

将todays date的值赋给它,该值始终在sy datum字段中可用:

类型DATS是一个字符类型字段格式作为YYYYMMDD。这意味着您也可以使用此格式指定特定的日期,例如:

与仅使用任何8个字符相比,使用此数据类型还有一些附加功能,即您可以向日期添加或减去天数,低价云服务器,并且它仍然是一致的:

这将为lv_date提供值20190330,20190321,最后20190404,正确转入下月。这也适用于年底,让我们像它的代码1999年:

这导致了lv_日期=20000101,千年虫安全和所有!

闰年没有问题:

第一次添加将给出lv_date=20160229,下一次添加lv_date=20160301

年、月和日

从日期中分离年、月或日的最简单方法是使用偏移量和长度规格来指定日期的一部分。这是可能的,因为日期类型是字符类型字段。

通过使用加号和数字添加偏移量,如+4,定义节的起始位置。

通过使用副词中的数字添加长度,如(2),定义节的长度。

由于日期的内部格式是YYYYMMDD,各部分如下:

"日部分"从偏移量6开始,长度为2个字符。(yyyymdd)。"月份部分"从偏移量4开始,长度为2个字符。(yyyymdd)。"年份部分"从开头开始,即偏移量0,长度为4个字符。(YYYYMMDD).

让我们用代码来做:

吕日是'29',吕月是'03',吕年是'2019'。请注意,对于年份,由于偏移量为0,因此可以在代码中忽略它。

更改日期如何?

好的,到目前为止还不错。这很管用。但现在我们要做的是我见过有人尝试的冒险生意。我们也可以在赋值操作的左侧使用偏移量和长度。这意味着只操纵日期的一部分。这很方便,很多时候非常有用,但是在日期方面会有很大的风险。

所以让我们更改月份:

将"月份部分"设置为05 results,正确的,在lv\u date=20190529中。

我们还可以在赋值操作的两边使用偏移量和长度:

将3添加到"月份部分"03 results,正确的,在lv_date=20190629中,

但是请注意,北京大数据公司有哪些,我们几乎丢失了dats数据类型中内置的所有日期逻辑。没有什么阻碍我们把7个月加在10月,返利怎么使用,例如:

在"月部分"10加7,结果是lv_date=20191712

计算本身在逻辑上是正确的,但20191712"我从来没有听说过一个月"。

很容易修复,你说如果lv_date+4(2)>12,如果是这样的话,在年部分加1,月部分减少12:

当然,我们最终得到20200512,但它开始变得有点复杂了,对吗?我们才刚刚开始…

我们还需要找到一种方法来处理,例如在1月底的基础上增加3个月。

结果是lv_date=20190431。因为四月只有30天,我们又被搞砸了。然后是二月,28天,闰年。当然,完全有可能解决所有问题,但是需要考虑几个因素。

我已经看到一些非常接近的解决方案,比如将一个月考虑为30天,只需在每个月的整个日期上加30天,就像这样:

结果是lv_date=20190627。我想少了两天。我还看到每年增加365天来增加年份:

结果是lv_date=20240327。又少了两天,这次是因为2020年和2024年的闰年?

输入类别更新日期。这是一个整洁的类做几乎任何有关日期。除了不必考虑所有零碎的东西之外,使用这个类还将产生可读性更好、更易于理解和维护的代码。这比人们想象的更重要。

让我们用上面的最后一个例子来尝试一下,云从,在20190329的基础上增加5年:

现在我们得到了20240329,正如预期的那样。

上面的另一个失败,加上7个月到10月:

我们立即以20200512结束。

如果你需要向后移动8年12天,然后再向前移动5个月(虽然非常不清楚为什么):

我们以lv_日期=20120229结束。嘿,看,返现,这是2012年的闰日。

其他例子是计算两个日期之间的差异,分为年、月和日:

或其他经典,检查一个日期的有效性:

总之,ABAP有一个强大的内置日期数据类型,但它很容易迷失在细节时,多加天是需要的。cl\u reca\u date类是我对任何与日期相关的内容的选择,也是我不断向同事推荐的方法。