OpenStreetMap中开放时间字段的分析器。

osm-humanized-opening-hours的Python项目详细描述


人性化开放时间-OSM中开放时间字段的分析器
==========================================

**人性化开放时间**是一个Python3模块,允许简单使用OpenStreetMap中使用的开放时间字段。


拉请求(遵循PEP-8)是非常受欢迎的!

`` python
>>gt;导入人性化的开放时间为hoh
>>field="mo fr 06:00-21:00;sa,su 08:00-12:00"
>;>;oh=hoh.ohparser(field)
>;>;oh.is庠open()
true
>;>;oh.next庠change()
datetime.datetime(2017,12,24,12,0)
>;>print(oh.render().plaintext_week_description())
"
周一:06:00-21:00
周二:06:00-21:00
周三:06:00-21:00
周四:06:00-21:00
周五:06:00-21:00
周六:08:00-12:00
周日:08:00-12:00
"
>;打印('\n'.join(oh.render().full_description())
"
周一到周五:06:00到21:00。
周六和周日:08:00到12:00。
""
````

**此模块仍在开发中,可能会出现错误。如果您发现一个问题,请创建一个问题。**

在pypi上可以使用它。

$pip3 install osm humanized opening hours

field="mo fr 06:00-21:00;sa,su 07:00-21:00"
>;
>;
>;oh=hoh.ohparser(field)
>;>;oh.is庠open()
true
````

返回一个布尔值。
可以使用datetime.datetime矩来检查另一个时间。

``python
>;>;噢,is_open()
true
```

----


以了解设备状态(打开/关闭)将在何时更改。
返回一个datetime.datetime对象。
可以使用一个DateTime.DateTime时刻,用于检查另一个时间。
如果我们在12月24日下午21:00/09:00之前…

``python
>;>;哦。下一个更改()
DateTime.DateTime(2017年,12月,24日,21日,0,TZINFO=<;UTC>;)
``

您可以使用"allow_recursion"参数允许递归以获得下一个真正的更改,但它将引发一个带有"24/7"字段的"recursionerror"。

``python
>;>oh=hoh.ohparser("mo fr 00:00-24:00")
>;>噢。下一个更改(允许递归=false)
datetime.datetime(2018,1,8,0,0,tzinfo=<;utc>;)
>;>噢。下一个更改(允许递归=true)
datetime.datetime(2018,1,11,23,59,59,999999,tzinfo=<;utc>;)
``

----


您可以使用*sanitize*staticmethod或**sanitized_field**属性获取给定给构造函数的字段的净化版本。

``python
>;field="mo su 0930-2000;jan off"
>;print(hoh.ohparser.sanitize(field))
"mo su 09:30-20:00;jan off"
````

已引发。
如果该字段包含跨越午夜的句点(如"mo fr 20:00-02:00"),则将引发"人性化"的打开时间。异常。跨越午夜的异常(也继承自"hoherror")。因为这还不支持。

ue`,您需要在带有"datetime.time"对象的"solar_hours"dict中设置它们。

例如,如果您知道日出是在08:00,日落是在20:00,则可以这样做:

``python
oh.solar_hours["sunrise"]=datetime.time(8,0)
哦。太阳时数["日落"]=日期时间。时间(20,0)
````

**如果您尝试在不设置字段的情况下对需要设置的字段执行某项操作,则会得到"solarhoursnotseterror"。**

请注意,除非设备位于赤道上,否则此设置仅在短时间内有效。句点。

无需分析太阳时数(真默认值)。
-`locale_name`(str):要使用的语言("en"默认值),它可以用"set_locale()"方法进行更改。

它有几个方法来检索有用的信息。

这个对象也可以用它的"render()"方法从Ohparser实例创建。

``python
`Ohr=oh.render(universal=false)
```

可以直接从具有"render_field()"函数的字段中获取它。

``python
ohr=hoh.render_field(field,universal=false)
```


`方法允许为呈现设置新的区域设置。它只需要一个参数:locale掼name。


"2月"、"3月"、"4月"、"5月"、"6月"、"7月"、"8月"、"9月"、"10月"、"11月"、"12月"
、"天":[
"星期一"、"星期二"、"星期三"、"星期四"、"星期五"、"星期六",
"星期日"
]
}
```

ohr.time_before_next_change(word=false)
"3 hours"
````

它被转换为同一周的天数列表。
它也不接受任何参数,因此所描述的周将是当前的一周。

`` python
>;一周一次的明文说明:
"
>周一:08:00-19:00
周二:08:00-19:00
周三:08:00-19:00
周三:08:00-19:00
周四:08:00-19:00
周五:08:00-19:00
周六:08:00-12:00
>周日:周日:营业
"
```








返回描述整个字段的字符串(句子)。

`` python
星期六:10:00到12:00。12月25日:关闭。"
```

Hoh还提供了四个对象:
-`day`:工作日、公共假日或学校假日;
-`period`:具有两个"moment"对象的时段:开始和结束;
-`moment kind`:时段的类型;
-`moment`:时间的某个时刻,可以是时段的开始或结束。

day

属性:
-`periods`(列表):包含在这一天中的"period"对象列表;
-`date`(datetime.date):当天的日期;
-`is_ph`(bool):如果当天是公共假日,则为true;
-`is sh`(bool):如果这一天是学校假期,则为真。

``python
首先使用Ohparser的"get_day()"方法,它接受一个"datetime.date"对象。
还可以使用"datetime.date"对象的切片。它还支持步进(整数)。

`` python
>;>oh[datetime.date.today()]
'<;day'mo'(2个时段)>;'

>;>oh[datetime.date(2018,1,1):datetime.date(2018,1,3)]
['<;day'mo'(2个时段)>;','<;day'tu'(2个时段)>;','<;"我们"(2个时段)>;']
```

使用"is_variable()"方法。
>;>period.is variable()
datetime.timedelta(0,10800)

时间内的时刻

```


`
`


<
` `正常`;
`日出`;
` `日落`;
` `黎明`;
` `黄昏`。

/>` ` ` `


/>真
` ` ` ` ` ` ` ` `(时间内的时刻` ` ` ` ` ` ` ` ` ` ` ` ` ` `种类):这种时刻;

`` python

```

关闭或"关闭"
10:00-20:00
日出日落或"黎明/黄昏"
(日出+01:00)-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00
1月10:00-20:00一月,feb-mo-fr 10:00-20:00
jan-feb-mo-fr 10:00-20:00
sh-mo 10:00-20:00
sh-mo-fr 10:00-20:00
复活节10:00-20:00
复活节+1天10:00-20:00
复活节+2天10:00-20:00
`````

以下格式尚不受支持,它们的解析将引发分析错误。

````
20:00-02:00跨越午夜。


su[1]10:00-20:00
sh,ph-mo-fr 10:00-20:00
sh,ph-mo-fr,su 10:00-20:00
1-2月,8-mo-fr,su 10:00-20:00
``

一千块0.4。

其条款可在[许可证](许可证)文件中找到。




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

推荐PyPI第三方库


热门话题
序列化反序列化java。awt。颜色>java。木卫一。InvalidClassException   java禁用多个日期范围jDateChooser   java为什么我的特例apper会被扔进泽西/灰熊?   JavaIntelliJ比较两个覆盖率数据   java什么是servletsdefault。你怎么办?   单击几下libgdx后java按钮没有响应   使用java将字符串转换为JSONArray   文件系统在java中刷新fileSystemViewer   java如何在hibernate中避免脏检查   java奇怪的问题,带有分号和“无法解决…”   java将值从子面板传递到父面板   HTML JTextPane CSS的Java FontSizeAction   java文件代码神秘地变成了一堆(0000)