{"id":27169972,"url":"https://github.com/anime-pdf/timeduration-cpp","last_synced_at":"2025-04-09T07:18:49.725Z","repository":{"id":286852933,"uuid":"962778528","full_name":"Anime-pdf/timeduration-cpp","owner":"Anime-pdf","description":"A lightweight C++17 header-only library for parsing and formatting human-readable time durations (e.g., \"2d 5h 30m\"). Supports chrono integration, SQL interval output, and flexible duration construction.","archived":false,"fork":false,"pushed_at":"2025-04-08T17:32:57.000Z","size":0,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-08T17:50:39.359Z","etag":null,"topics":["chrono","cpp","cpp17","cpp17-library","duration-parser","header-only","lightweight","sql-interval","time-parsing","utility-library"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Anime-pdf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-08T16:56:31.000Z","updated_at":"2025-04-08T17:33:18.000Z","dependencies_parsed_at":"2025-04-08T17:50:41.926Z","dependency_job_id":"8d2ca33b-819e-45da-aa2f-a27bf87e173a","html_url":"https://github.com/Anime-pdf/timeduration-cpp","commit_stats":null,"previous_names":["anime-pdf/timeduration-cpp"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anime-pdf%2Ftimeduration-cpp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anime-pdf%2Ftimeduration-cpp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anime-pdf%2Ftimeduration-cpp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Anime-pdf%2Ftimeduration-cpp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Anime-pdf","download_url":"https://codeload.github.com/Anime-pdf/timeduration-cpp/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247994118,"owners_count":21030051,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["chrono","cpp","cpp17","cpp17-library","duration-parser","header-only","lightweight","sql-interval","time-parsing","utility-library"],"created_at":"2025-04-09T07:18:49.181Z","updated_at":"2025-04-09T07:18:49.711Z","avatar_url":"https://github.com/Anime-pdf.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# timeduration-cpp\n\nA lightweight C++17 library for parsing time duration strings into chrono durations.\n\n## Features\n\n* Parse human-readable time strings like \"5h 30m\" or \"2d 4h 15m 30s\"\n* Convert durations between different units (days, hours, minutes, seconds)\n* Format durations as human-readable strings\n* Generate SQL interval expressions\n* Header-only implementation with minimal dependencies\n\n## Requirements\n\n* C++17 compatible compiler\n* CMake 3.14 or higher\n\n## Installation\n\n### Using CMake\n\n```bash\ngit clone https://github.com/yourusername/timeduration-cpp.git\ncd timeduration-cpp\nmkdir build \u0026\u0026 cd build\ncmake ..\ncmake --install .\n```\n\n### Header-only Usage\n\nSimply copy the `include/timeduration/timeduration.hpp` file to your project and include it.\n\n## Usage\n\n```cpp\n#include \u003ctimeduration/timeduration.hpp\u003e\n#include \u003ciostream\u003e\n\nint main() {\n    // Parse a time duration string\n    auto duration = timeduration::CTimePeriod(\"2h 30m 15s\");\n    \n    // Access components\n    std::cout \u003c\u003c \"Hours: \" \u003c\u003c duration.hours() \u003c\u003c std::endl;\n    std::cout \u003c\u003c \"Minutes: \" \u003c\u003c duration.minutes() \u003c\u003c std::endl;\n    std::cout \u003c\u003c \"Seconds: \" \u003c\u003c duration.seconds() \u003c\u003c std::endl;\n    \n    // Get total duration in seconds\n    auto total_seconds = duration.duration().count();\n    std::cout \u003c\u003c \"Total seconds: \" \u003c\u003c total_seconds \u003c\u003c std::endl;\n    \n    // Format as string\n    std::cout \u003c\u003c \"Formatted: \" \u003c\u003c duration.toString() \u003c\u003c std::endl;\n    \n    // Generate SQL interval\n    std::cout \u003c\u003c \"SQL interval: \" \u003c\u003c duration.asSqlInterval() \u003c\u003c std::endl;\n    \n    // Create from components\n    auto custom = timeduration::CTimePeriod(15, 30, 2); // 2h 30m 15s\n    \n    // Compare durations\n    if (duration == custom) {\n        std::cout \u003c\u003c \"Durations are equal!\" \u003c\u003c std::endl;\n    }\n    \n    return 0;\n}\n```\n\n## Supported Time Units\n\nThe library supports the following time units:\n\n| Unit | Abbreviation | Full Name |\n|------|--------------|-----------|\n| Seconds | s | seconds |\n| Minutes | m | minutes |\n| Hours | h | hours |\n| Days | d | days |\n| Months | mo | months |\n| Years | y | years |\n\n## Running Tests\n\nThe library comes with a comprehensive test suite built with Google Test. To run the tests:\n\n```bash\ngit clone https://github.com/yourusername/timeduration-cpp.git\ncd timeduration-cpp\nmkdir build \u0026\u0026 cd build\ncmake .. -DTIMEDURATION_BUILD_TESTS=ON\ncmake --build .\nctest -V\n```\n\nBy default, if Google Test is not found on your system, CMake will automatically download and build it. You can disable this behavior with `-DTIMEDURATION_DOWNLOAD_GTEST=OFF` if you prefer to use your system's Google Test installation.\n\n## Running Examples\n\nTo build and run the examples:\n\n```bash\ngit clone https://github.com/yourusername/timeduration-cpp.git\ncd timeduration-cpp\nmkdir build \u0026\u0026 cd build\ncmake .. -DTIMEDURATION_BUILD_EXAMPLES=ON\ncmake --build .\n./examples/basic_usage\n```\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanime-pdf%2Ftimeduration-cpp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fanime-pdf%2Ftimeduration-cpp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fanime-pdf%2Ftimeduration-cpp/lists"}