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。
其条款可在[许可证](许可证)文件中找到。
==========================================
**人性化开放时间**是一个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
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。
其条款可在[许可证](许可证)文件中找到。