日期命令

datec的Python项目详细描述


日期命令:基于命令的日期计算引擎

datec允许您使用"日期命令"通过添加 对他们来说,比如datetime.datetime.now()+period(2,"week")。

可以使用parse()函数从字符串中分析日期命令, 从字符串表示创建命令。这就形成了 datec命令的基础,它是一个要输出的命令行程序 应用日期命令后的日期时间。一般来说日期 表示形式为nxyyyy-mm-ddthh:mm:ss.ffffff,其中未指定 省略部分,使符号保持完整,如"2x-2-29t3:"(参见 意思如下)。如果未指定小数部分 如果所有时间部分都未指定"t:",则可以省略"."。 如果未指定所有日期部分,则可以省略"-t" 省略,如果n为0,则可以省略x。旁边有几个 其他更多格式,如+3周和-2周,用于按时段和 工作日./P>

日期命令有两种形式:周期移位命令和部分 日期时间转换命令。第一种更为常见:它们 看起来像

  • +2周(将日期时间向前移动2周)
  • -1个月(将日期时间向后移动1个月)

周期是年、月、周、日、时、分和秒之一, 由period类的对象表示。分数是 可接受,年和月除外。如果改变一个周期导致 无效日期(例如,从2019-07-31向后移动1个月),它 向后移动最近的有效日期(此处为2019-06-30)。一般来说 比移位部分细的部分不受影响(例如,移位1 从2019-07-31 02:00开始的月份为2019-06-30 02:00)。

部分日期时间转换不太常见。它看起来像:

  • 12:(将小时数设置为12)
  • +2x12:(前进到第二小时12)
  • +4x--31(移到每月第31天的第四次出现)
  • -3x-02-29(向后移到2月29日第三次出现)
  • 星期三(设置为同一周的星期三,星期日开始)
  • -3周三(移到当前日期时间之前的第三个星期三)

它们由工作日对象或部分日期表示 带计数的对象。计数为0意味着设置而不是移位。 只接受整数计数。

设置为无效日期是错误的(例如,-31应用于 2019-06-25是个错误)。指定的日期时间部分必须 连续(指定12::05是一个错误)。它也是 指定年份的部分日期发生移位错误 (例如"+2x2019--"。

另一方面,将日期转换为无效的日期 指定的将继续移动,直到指定的日期有效。为了 例如,如果将-2-29与count 1相加到2019-01-01,则 2020-02-29,因为2019-02-29不是有效日期。如果计数是2 取而代之的是2024-02-29。

逐月切换到无效日期将导致日期移动 向后直到日期有效。例如,如果你用-6-换 从2019-05-31开始计数1(下一年6月),得到2019-06-30。计数2 您将获得2020-06-30。

这个图书馆是因为沮丧而发展起来的 获取日期时间的shell脚本或程序,如"从现在开始的下一个下午6点" 或者"两天前的下三个月"。有了这个模块 它们可以指定为"+1x18:00:00.0"和"-2day+1x--3" 分别是。在预期的用例中,计数是很小的数字。 所以图书馆并不总是高效的(有时我们只是循环"计数" 前进或后退的时间)。只要做起来简单, 实现只是转发到relativeDelta,在这种情况下 效率更高。

目前该程序不处理时区和夏令时。 这是因为作者住在一个没有日光节约的地方 被观察到。欢迎投稿。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Hibernate:jpamodelgen生成java而不是类   java如何在第二次活动结束后显示广告?   javascript如何在linux或windows上将java导出到jar   java One ArrayList添加了2个不同的选项   AmazonWeb服务如何在java中使用AWS Textract检索pdf中存在的表   java为什么RecycleView中的水平项在单击时不起作用?   java计算如果存在映射   java在捕获的组上应用正则表达式   如何使用Java在MySQL的同一个表中插入来自不同类的值   java字符串中最常见的字母(大写和小写)   Spring SessionBean实例正在由java中的多个用户共享   使用Spring Boot将@WebInitParam中的值外部化   java一创建线程就开始执行(多线程)   java是安卓所需的系统权限。意图行动给你打电话?