#openstreetmap #opening #hours #parser #evaluation #osm #fields

bin+lib opening-hours

OpenStreetMap 中 opening_hours 字段的解析和评估工具

30 个版本

0.6.18 2023 年 11 月 27 日
0.6.15 2023 年 6 月 14 日
0.6.4 2022 年 8 月 12 日
0.5.5 2022 年 6 月 7 日
0.4.1 2021 年 2 月 22 日

#40 in 地理空间

Download history 7/week @ 2024-04-08 160/week @ 2024-04-29 417/week @ 2024-05-06 200/week @ 2024-05-13 111/week @ 2024-05-20 43/week @ 2024-05-27 65/week @ 2024-06-03 68/week @ 2024-06-10 50/week @ 2024-06-17 26/week @ 2024-06-24 27/week @ 2024-07-01 50/week @ 2024-07-08 33/week @ 2024-07-15 17/week @ 2024-07-22

127 每月下载量

MIT/Apache

1MB
3.5K SLoC

Rust 实现 OSM 营业时间

Python 绑定可在此处找到 这里

A Rust 库,用于解析和使用 OpenStreetMap 的 opening_hours 字段。您可以在此处找到其规范,以及在此处找到参考 JS 库。

请注意,规范相当混乱,而 JS 库有相当大的自由来扩展它。这意味着大多数现实世界的数据实际上并不完全符合官方规范中详细规定的非常严格的语法。这个库试图适应现实世界的数据,同时在尽可能接近核心规范的同时做到这一点。

用法

将此添加到您的 Cargo.toml

[dependencies]
opening-hours = "0"

以下是一个简单的示例,它解析一个营业时间描述并显示其当前状态和下次更改的日期

use chrono::Local;
use opening_hours::OpeningHours;

// Opens until 18pm during the week and until 12am the week-end.
const OH: &str = "Mo-Fr 10:00-18:00; Sa-Su 10:00-12:00";

fn main() {
    let oh = OpeningHours::parse(&OH).unwrap();
    let date = Local::now().naive_local();
    println!("Current status is {:?}", oh.state(date).unwrap());
    println!("This will change at {:?}", oh.next_change(date).unwrap());
}

支持的功能

假日

使用 Python 库 workalendar 加载公共假日数据库。您应参考 Python 库以获取有关支持哪些国家的更多信息。

为避免生成庞大的二进制文件,假日数据不会加载到 2100 年之后。

语法

如果您只对解析表达式感兴趣,而不是评估或如果您想构建自己的评估引擎,您可能应该依赖 opening-hours-syntax crate。

"Package"


"Syntax Package"


"Documentation"


"Python package"


"Code coverage"


"Worldwide holidays and working days helper and toolkit."

依赖关系

~4.5MB
~79K SLoC