{"id":33549234,"url":"https://github.com/nfx-libs/nfx-datetime","last_synced_at":"2026-02-14T16:08:42.917Z","repository":{"id":326342708,"uuid":"1098024550","full_name":"nfx-libs/nfx-datetime","owner":"nfx-libs","description":"A cross-platform C++20 library for high-precision datetime operations with ISO 8601 support and timezone handling","archived":false,"fork":false,"pushed_at":"2026-02-01T21:30:40.000Z","size":311,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-02T03:46:22.801Z","etag":null,"topics":["cpp20","cross-platform","date-time","datetime","iso-8601","iso8601"],"latest_commit_sha":null,"homepage":"https://nfx-libs.github.io/nfx-datetime/","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/nfx-libs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-17T06:47:11.000Z","updated_at":"2026-02-01T19:18:13.000Z","dependencies_parsed_at":"2025-12-01T11:03:28.940Z","dependency_job_id":null,"html_url":"https://github.com/nfx-libs/nfx-datetime","commit_stats":null,"previous_names":["nfx-libs/nfx-datetime"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/nfx-libs/nfx-datetime","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-datetime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-datetime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-datetime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-datetime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/nfx-libs","download_url":"https://codeload.github.com/nfx-libs/nfx-datetime/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/nfx-libs%2Fnfx-datetime/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29039342,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-03T08:41:49.363Z","status":"ssl_error","status_checked_at":"2026-02-03T08:40:19.255Z","response_time":96,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["cpp20","cross-platform","date-time","datetime","iso-8601","iso8601"],"created_at":"2025-11-27T10:00:39.936Z","updated_at":"2026-02-03T09:08:17.247Z","avatar_url":"https://github.com/nfx-libs.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# nfx-datetime\n\n\u003c!-- Project Info --\u003e\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=flat-square)](https://github.com/nfx-libs/nfx-datetime/blob/main/LICENSE.txt) [![GitHub release (latest by date)](https://img.shields.io/github/v/release/nfx-libs/nfx-datetime?style=flat-square)](https://github.com/nfx-libs/nfx-datetime/releases) [![GitHub tag (latest by date)](https://img.shields.io/github/tag/nfx-libs/nfx-datetime?style=flat-square)](https://github.com/nfx-libs/nfx-datetime/tags)\u003cbr/\u003e\n\n![C++20](https://img.shields.io/badge/C%2B%2B-20-blue?style=flat-square) ![CMake](https://img.shields.io/badge/CMake-3.20%2B-green.svg?style=flat-square) ![Cross Platform](https://img.shields.io/badge/Platform-Linux_Windows-lightgrey?style=flat-square)\n\n\u003c!-- CI/CD Status --\u003e\n\n[![Linux GCC](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-datetime/build-linux-gcc.yml?branch=main\u0026label=Linux%20GCC\u0026style=flat-square)](https://github.com/nfx-libs/nfx-datetime/actions/workflows/build-linux-gcc.yml) [![Linux Clang](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-datetime/build-linux-clang.yml?branch=main\u0026label=Linux%20Clang\u0026style=flat-square)](https://github.com/nfx-libs/nfx-datetime/actions/workflows/build-linux-clang.yml) [![Windows MinGW](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-datetime/build-windows-mingw.yml?branch=main\u0026label=Windows%20MinGW\u0026style=flat-square)](https://github.com/nfx-libs/nfx-datetime/actions/workflows/build-windows-mingw.yml) [![Windows MSVC](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-datetime/build-windows-msvc.yml?branch=main\u0026label=Windows%20MSVC\u0026style=flat-square)](https://github.com/nfx-libs/nfx-datetime/actions/workflows/build-windows-msvc.yml) [![CodeQL](https://img.shields.io/github/actions/workflow/status/nfx-libs/nfx-datetime/codeql.yml?branch=main\u0026label=CodeQL\u0026style=flat-square)](https://github.com/nfx-libs/nfx-datetime/actions/workflows/codeql.yml)\n\n\u003e A high-performance C++20 datetime library with 100-nanosecond precision, full ISO 8601 support, and cross-platform timezone handling\n\n## Overview\n\nnfx-datetime is a modern C++20 library providing high-precision temporal operations with 100-nanosecond resolution. It offers comprehensive ISO 8601 parsing and formatting, timezone-aware datetime handling, and arithmetic operations optimized for performance across multiple platforms and compilers.\n\n## Key Features\n\n### 🕒 High-Precision Temporal Types\n\n- **DateTime**: UTC-only datetime operations with 100-nanosecond precision (ticks)\n- **DateTimeOffset**: Timezone-aware datetime with UTC offset handling\n- **TimeSpan**: Duration and interval arithmetic with high precision\n\n### 📅 ISO 8601 Compliance\n\n- Full ISO 8601 parsing and formatting support\n- Basic format: `20250124T054200Z`\n- Extended format: `2025-01-24T05:42:00Z`\n- Precision formats:\n  - Full precision: `2025-01-24T05:42:00.1234567Z` (100-nanosecond ticks)\n  - Trimmed: `2025-01-24T05:42:00.123Z` (trailing zeros removed)\n  - Milliseconds: `2025-01-24T05:42:00.123Z` (3-digit fixed)\n  - Microseconds: `2025-01-24T05:42:00.123456Z` (6-digit fixed)\n- Timezone offsets: `2025-01-24T05:42:00+02:00`\n- Duration format: `P1DT2H30M` (1 day, 2 hours, 30 minutes)\n\n### 📊 Real-World Applications\n\n- **Logging \u0026 Audit Systems**: High-precision timestamp recording for system logs and audit trails\n- **Financial Systems**: Accurate datetime handling for transactions, settlements, and market data\n- **IoT \u0026 Telemetry**: Precise time-series data collection and analysis\n- **Calendar Applications**: Timezone-aware scheduling and appointment management\n- **Data Synchronization**: Cross-platform timestamp coordination\n- **API Services**: ISO 8601 compliant request/response timestamps\n- **Database Operations**: Timestamp conversion and timezone handling\n- **Event Processing**: Duration calculations and time-based event correlation\n\n### ⚡ Performance Optimized\n\n- High-precision arithmetic operations (100-nanosecond resolution)\n- Highly optimized parsing\n- Efficient string formatting\n- Zero-cost abstractions with constexpr support\n- Compiler-optimized inline implementations\n\n### 🌍 Cross-Platform Support\n\n- **Platforms**: Linux, Windows\n- **Architecture**: x86-64\n- **Compilers**: GCC 14+, Clang 18+, MSVC 2022+\n- Thread-safe operations\n- Consistent behavior across platforms\n- CI/CD testing on multiple compilers\n\n## Quick Start\n\n### Requirements\n\n- C++20 compatible compiler:\n  - **GCC 14+** (14.2.0 tested)\n  - **Clang 18+** (19.1.7 tested)\n  - **MSVC 2022+** (19.44+ tested)\n- CMake 3.20 or higher\n\n### CMake Integration\n\n```cmake\n# Build options\noption(NFX_DATETIME_BUILD_STATIC         \"Build static library\"               OFF )\noption(NFX_DATETIME_BUILD_SHARED         \"Build shared library\"               OFF )\n\n# Development options\noption(NFX_DATETIME_BUILD_TESTS          \"Build tests\"                        OFF )\noption(NFX_DATETIME_BUILD_SAMPLES        \"Build samples\"                      OFF )\noption(NFX_DATETIME_BUILD_BENCHMARKS     \"Build benchmarks\"                   OFF )\noption(NFX_DATETIME_BUILD_DOCUMENTATION  \"Build Doxygen documentation\"        OFF )\n\n# Installation\noption(NFX_DATETIME_INSTALL_PROJECT      \"Install project\"                    OFF )\n\n# Packaging\noption(NFX_DATETIME_PACKAGE_SOURCE       \"Enable source package generation\"   OFF )\noption(NFX_DATETIME_PACKAGE_ARCHIVE      \"Enable TGZ/ZIP package generation\"  OFF )\noption(NFX_DATETIME_PACKAGE_DEB          \"Enable DEB package generation\"      OFF )\noption(NFX_DATETIME_PACKAGE_RPM          \"Enable RPM package generation\"      OFF )\noption(NFX_DATETIME_PACKAGE_WIX          \"Enable WiX MSI installer\"           OFF )\n```\n\n### Using in Your Project\n\n#### Option 1: Using FetchContent (Recommended)\n\n```cmake\ninclude(FetchContent)\nFetchContent_Declare(\n  nfx-datetime\n  GIT_REPOSITORY https://github.com/nfx-libs/nfx-datetime.git\n  GIT_TAG        main  # or use specific version tag like \"0.1.0\"\n)\nFetchContent_MakeAvailable(nfx-datetime)\n\n# Link with static library\ntarget_link_libraries(your_target PRIVATE nfx-datetime::static)\n```\n\n#### Option 2: As a Git Submodule\n\n```bash\n# Add as submodule\ngit submodule add https://github.com/nfx-libs/nfx-datetime.git third-party/nfx-datetime\n```\n\n```cmake\n# In your CMakeLists.txt\nadd_subdirectory(third-party/nfx-datetime)\ntarget_link_libraries(your_target PRIVATE nfx-datetime::static)\n```\n\n#### Option 3: Using find_package (After Installation)\n\n```cmake\nfind_package(nfx-datetime REQUIRED)\ntarget_link_libraries(your_target PRIVATE nfx-datetime::static)\n```\n\n### Building\n\n**Build Commands:**\n\n```bash\n# Clone the repository\ngit clone https://github.com/nfx-libs/nfx-datetime.git\ncd nfx-datetime\n\n# Create build directory\nmkdir build \u0026\u0026 cd build\n\n# Configure with CMake\ncmake .. -DCMAKE_BUILD_TYPE=Release\n\n# Build the library\ncmake --build . --config Release --parallel\n\n# Run tests (optional)\nctest -C Release --output-on-failure\n\n# Run benchmarks (optional)\n./bin/benchmarks/BM_DateTime\n./bin/benchmarks/BM_DateTimeOffset\n./bin/benchmarks/BM_TimeSpan\n```\n\n### Documentation\n\nnfx-datetime includes API documentation generated with Doxygen.\n\n#### 📚 Online Documentation\n\nThe complete API documentation is available online at:\n**https://nfx-libs.github.io/nfx-datetime**\n\n#### Building Documentation Locally\n\n```bash\n# Configure with documentation enabled\ncmake .. -DCMAKE_BUILD_TYPE=Release -DNFX_DATETIME_BUILD_DOCUMENTATION=ON\n\n# Build the documentation\ncmake --build . --target nfx-datetime-documentation\n```\n\n#### Requirements\n\n- **Doxygen** - Documentation generation tool\n- **Graphviz Dot** (optional) - For generating class diagrams\n\n#### Accessing Local Documentation\n\nAfter building, open `./build/doc/html/index.html` in your web browser.\n\n## Usage Examples\n\n### DateTime - UTC Operations\n\n```cpp\n#include \u003cnfx/datetime/DateTime.h\u003e\n\nusing namespace nfx::time;\n\n// Current time\nDateTime now = DateTime::now();\n\n// Construction from components\nDateTime dt1(2025, 1, 24, 5, 42, 0);  // 2025-01-24 05:42:00 UTC\n\n// ISO 8601 parsing (using constructor - throws on error)\nDateTime dt2(\"2025-01-24T05:42:00Z\");\n\n// ISO 8601 parsing (safe - returns std::optional)\nauto dt3 = DateTime::fromString(\"2025-01-24T05:42:00Z\");\nif (dt3) {\n    // Use *dt3\n}\n\n// ISO 8601 parsing (safe - returns bool)\nDateTime dt4;\nif (DateTime::fromString(\"2025-01-24T05:42:00Z\", dt4)) {\n    // Use dt4\n}\n\n// Arithmetic operations\nTimeSpan oneHour = TimeSpan::fromHours(1);\nDateTime later = dt1 + oneHour;\n\n// Formatting\nstd::string iso = dt1.toString(DateTime::Format::Iso8601);                     // \"2025-01-24T05:42:00Z\"\nstd::string precise = dt1.toString(DateTime::Format::Iso8601Precise);          // \"2025-01-24T05:42:00.0000000Z\"\nstd::string trimmed = dt1.toString(DateTime::Format::Iso8601PreciseTrimmed);   // \"2025-01-24T05:42:00.0Z\" (trailing zeros removed)\nstd::string millis = dt1.toString(DateTime::Format::Iso8601Millis);            // \"2025-01-24T05:42:00.000Z\" (3-digit fixed)\nstd::string micros = dt1.toString(DateTime::Format::Iso8601Micros);            // \"2025-01-24T05:42:00.000000Z\" (6-digit fixed)\nstd::string extended = dt1.toString(DateTime::Format::Iso8601Extended);        // \"2025-01-24T05:42:00+00:00\"\nstd::string basic = dt1.toString(DateTime::Format::Iso8601Basic);              // \"20250124T054200Z\"\n\n// Epoch timestamp conversions\nstd::int64_t epochSeconds = dt1.toEpochSeconds();\nstd::int64_t epochMillis = dt1.toEpochMilliseconds();\nDateTime fromEpoch = DateTime::fromEpochSeconds(epochSeconds);\n\n// Component access\nint year = dt1.year();\nint month = dt1.month();\nint day = dt1.day();\nint hour = dt1.hour();\nint minute = dt1.minute();\nint second = dt1.second();\n```\n\n### DateTimeOffset - Timezone-Aware Operations\n\n```cpp\n#include \u003cnfx/datetime/DateTimeOffset.h\u003e\n\nusing namespace nfx::time;\n\n// Current time with local offset\nDateTimeOffset now = DateTimeOffset::now();\n\n// Construction with offset\nTimeSpan offset = TimeSpan::fromHours(2);  // +02:00\nDateTimeOffset dto1(2025, 1, 24, 5, 42, 0, offset);\n\n// ISO 8601 parsing with offset (using constructor - throws on error)\nDateTimeOffset dto2(\"2025-01-24T05:42:00+02:00\");\n\n// ISO 8601 parsing (safe - returns std::optional)\nauto dto3 = DateTimeOffset::fromString(\"2025-01-24T05:42:00+02:00\");\nif (dto3) {\n    // Use *dto3\n}\n\n// ISO 8601 parsing (safe - returns bool)\nDateTimeOffset dto4;\nif (DateTimeOffset::fromString(\"2025-01-24T05:42:00+02:00\", dto4)) {\n    // Use dto4\n}\n\n// Convert to different timezone\nDateTimeOffset utc = dto1.toUniversalTime();\nDateTimeOffset newYork = dto1.toOffset(TimeSpan::fromHours(-5));\n\n// Get underlying UTC datetime\nDateTime utcDateTime = dto1.utcDateTime();\n\n// Epoch timestamp conversions\nstd::int64_t epochSeconds = dto1.toEpochSeconds();\nstd::int64_t epochMillis = dto1.toEpochMilliseconds();\nDateTimeOffset fromEpoch = DateTimeOffset::fromEpochSeconds(epochSeconds);\n\n// Formatting\nstd::string iso = dto1.toString();                                              // \"2025-01-24T05:42:00+02:00\"\nstd::string precise = dto1.toString(DateTime::Format::Iso8601Precise);          // \"2025-01-24T05:42:00.0000000+02:00\"\nstd::string trimmed = dto1.toString(DateTime::Format::Iso8601PreciseTrimmed);   // \"2025-01-24T05:42:00.0+02:00\" (trailing zeros removed)\nstd::string millis = dto1.toString(DateTime::Format::Iso8601Millis);            // \"2025-01-24T05:42:00.000+02:00\" (3-digit fixed)\nstd::string micros = dto1.toString(DateTime::Format::Iso8601Micros);            // \"2025-01-24T05:42:00.000000+02:00\" (6-digit fixed)\nstd::string extended = dto1.toString(DateTime::Format::Iso8601Extended);        // \"2025-01-24T05:42:00+02:00\" (same as default)\nstd::string basic = dto1.toString(DateTime::Format::Iso8601Basic);              // \"20250124T054200+0200\"\n```\n\n### TimeSpan - Duration Calculations\n\n```cpp\n#include \u003cnfx/datetime/TimeSpan.h\u003e\n\nusing namespace nfx::time;\n\n// Construction from various units\nTimeSpan ts1 = TimeSpan::fromHours(2);\nTimeSpan ts2 = TimeSpan::fromMinutes(30);\nTimeSpan ts3 = TimeSpan::fromSeconds(45);\nTimeSpan ts4 = TimeSpan::fromMilliseconds(500);\n\n// Using user-defined literals\nusing namespace nfx::time::literals;\nTimeSpan ts5 = 2_h + 30_min + 45_s;  // 2 hours, 30 minutes, 45 seconds\n\n// ISO 8601 duration parsing (using constructor - throws on error)\nTimeSpan ts6(\"PT2H30M\");  // 2 hours 30 minutes\n\n// ISO 8601 duration parsing (safe - returns std::optional)\nauto ts7 = TimeSpan::fromString(\"PT2H30M45S\");\nif (ts7) {\n    // Use *ts7\n}\n\n// ISO 8601 duration parsing (safe - returns bool)\nTimeSpan ts8;\nif (TimeSpan::fromString(\"PT2H30M\", ts8)) {\n    // Use ts8\n}\n\n// Arithmetic\nTimeSpan total = ts1 + ts2;  // 2.5 hours\nTimeSpan diff = ts1 - ts2;   // 1.5 hours\nTimeSpan doubled = ts1 * 2;  // 4 hours\nTimeSpan half = ts1 / 2;     // 1 hour\ndouble ratio = ts1 / ts2;    // 4.0 (ts1 is 4x ts2)\n\n// Conversions\ndouble hours = total.hours();         // 2.5\ndouble minutes = total.minutes();     // 150\ndouble seconds = total.seconds();     // 9000\nstd::int64_t ticks = total.ticks();   // 100-nanosecond units\n\n// Component access\nstd::int32_t h = total.hours();            // 2\nstd::int32_t m = total.minutes();          // 30\nstd::int32_t s = total.seconds();          // 0\n\n// Formatting\nstd::string iso = total.toString();  // \"PT2H30M\"\n\n// std::chrono interoperability\nauto chronoDuration = total.toChrono();\nTimeSpan fromChrono = TimeSpan::fromChrono(std::chrono::hours(2));\n```\n\n### Complete Example\n\n```cpp\n#include \u003ciostream\u003e\n#include \u003cnfx/datetime/DateTime.h\u003e\n#include \u003cnfx/datetime/DateTimeOffset.h\u003e\n#include \u003cnfx/datetime/TimeSpan.h\u003e\n\nint main()\n{\n    using namespace nfx::time;\n\n    // Get current UTC time\n    DateTime now = DateTime::utcNow();\n    std::cout \u003c\u003c \"Current UTC time: \" \u003c\u003c now.toString(DateTime::Format::Iso8601Precise) \u003c\u003c std::endl;\n\n    // Calculate future date using TimeSpan\n    TimeSpan oneWeek = TimeSpan::fromDays(7);\n    DateTime nextWeek = now + oneWeek;\n    std::cout \u003c\u003c \"One week from now: \" \u003c\u003c nextWeek.toString(DateTime::Format::Iso8601Precise) \u003c\u003c std::endl;\n\n    // Work with timezones\n    DateTimeOffset localNow = DateTimeOffset::now();\n    std::cout \u003c\u003c \"Local time: \" \u003c\u003c localNow.toString() \u003c\u003c std::endl;\n\n    DateTimeOffset utcNow = DateTimeOffset::utcNow();\n    std::cout \u003c\u003c \"UTC time with offset: \" \u003c\u003c utcNow.toString() \u003c\u003c std::endl;\n\n    // Calculate duration between dates\n    TimeSpan duration = nextWeek - now;\n    std::cout \u003c\u003c \"Duration (ISO 8601): \" \u003c\u003c duration.toString() \u003c\u003c std::endl;\n    std::cout \u003c\u003c \"Duration in hours: \" \u003c\u003c duration.hours() \u003c\u003c std::endl;\n    std::cout \u003c\u003c \"Duration in days: \" \u003c\u003c duration.days() \u003c\u003c std::endl;\n\n    // Parse ISO 8601 strings\n    auto parsedDate = DateTime::fromString(\"2025-12-31T23:59:59Z\");\n    if (parsedDate) {\n        std::cout \u003c\u003c \"New Year's Eve: \" \u003c\u003c parsedDate-\u003etoString() \u003c\u003c std::endl;\n    }\n\n    // Epoch timestamp conversions\n    std::int64_t epochSeconds = now.toEpochSeconds();\n    DateTime fromEpoch = DateTime::fromEpochSeconds(epochSeconds);\n    std::cout \u003c\u003c \"Epoch timestamp: \" \u003c\u003c epochSeconds \u003c\u003c std::endl;\n    std::cout \u003c\u003c \"From epoch: \" \u003c\u003c fromEpoch.toString() \u003c\u003c std::endl;\n\n    // Component access\n    std::cout \u003c\u003c \"Year: \" \u003c\u003c now.year() \u003c\u003c \", Month: \" \u003c\u003c now.month()\n              \u003c\u003c \", Day: \" \u003c\u003c now.day() \u003c\u003c std::endl;\n\n    return 0;\n}\n```\n\n**Sample Output:**\n\n```\nCurrent UTC time: 2025-11-16T12:42:36.8324975Z\nOne week from now: 2025-11-23T12:42:36.8324975Z\nLocal time: 2025-11-16T13:42:36+01:00\nUTC time with offset: 2025-11-16T12:42:36+00:00\nDuration (ISO 8601): P7D\nDuration in hours: 168\nDuration in days: 7\nNew Year's Eve: 2025-12-31T23:59:59Z\nEpoch timestamp: 1763258556\nFrom epoch: 2025-11-16T12:42:36Z\nYear: 2025, Month: 11, Day: 16\n```\n\n## Installation \u0026 Packaging\n\nnfx-datetime provides packaging options for distribution.\n\n### Package Generation\n\n```bash\n# Configure with packaging options\ncmake .. -DCMAKE_BUILD_TYPE=Release \\\n         -DNFX_DATETIME_BUILD_STATIC=ON \\\n         -DNFX_DATETIME_BUILD_SHARED=ON \\\n         -DNFX_DATETIME_PACKAGE_ARCHIVE=ON \\\n         -DNFX_DATETIME_PACKAGE_DEB=ON \\\n         -DNFX_DATETIME_PACKAGE_RPM=ON\n\n# Generate binary packages\ncmake --build . --target package\n# or\ncd build \u0026\u0026 cpack\n\n# Generate source packages\ncd build \u0026\u0026 cpack --config CPackSourceConfig.cmake\n```\n\n### Supported Package Formats\n\n| Format      | Platform       | Description                        | Requirements |\n| ----------- | -------------- | ---------------------------------- | ------------ |\n| **TGZ/ZIP** | Cross-platform | Compressed archive packages        | None         |\n| **DEB**     | Debian/Ubuntu  | Native Debian packages             | `dpkg-dev`   |\n| **RPM**     | RedHat/SUSE    | Native RPM packages                | `rpm-build`  |\n| **WiX**     | Windows        | Professional MSI installer         | `WiX 3.11+`  |\n| **Source**  | Cross-platform | Source code distribution (TGZ+ZIP) | None         |\n\n### Installation\n\n```bash\n# Linux (DEB-based systems)\nsudo dpkg -i nfx-datetime_*_amd64.deb\n\n# Linux (RPM-based systems)\nsudo rpm -ivh nfx-datetime-*-Linux.rpm\n\n# Windows (MSI installer)\nnfx-datetime-0.1.0-MSVC.msi\n\n# Manual installation (extract archive)\ntar -xzf nfx-datetime-*-Linux.tar.gz -C /usr/local/\n```\n\n## Project Structure\n\n```\nnfx-datetime/\n├── benchmark/                   # Performance benchmarks\n├── cmake/                       # CMake modules and configuration\n├── include/nfx/                 # Public headers\n│   ├── DateTime.h               # Main umbrella header (includes all)\n│   ├── datetime/                # Core datetime classes\n│   │   ├── DateTime.h           # UTC datetime with 100ns precision\n│   │   ├── DateTimeOffset.h     # Timezone-aware datetime\n│   │   └── TimeSpan.h           # Duration/interval representation\n│   └── detail/datetime/         # Inline implementation details\n├── samples/                     # Example usage and demonstrations\n├── src/                         # Implementation files\n└── test/                        # Unit tests\n```\n\n## Performance\n\nFor detailed performance metrics and benchmarks, see the [benchmark documentation](benchmark/README.md).\n\n## Roadmap\n\nSee [TODO.md](TODO.md) for upcoming features and project roadmap.\n\n## Changelog\n\nSee the [CHANGELOG.md](CHANGELOG.md) for a detailed history of changes, new features, and bug fixes.\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Acknowledgments\n\n- Inspired by .NET's DateTime API design\n\n## Dependencies\n\n### Runtime Dependencies\n\n- **[nfx-stringbuilder](https://github.com/nfx-libs/nfx-stringbuilder)**: High-performance string builder (MIT License)\n\n### Development Dependencies\n\n- **[GoogleTest](https://github.com/google/googletest)**: Testing framework (BSD 3-Clause License) - Development only\n- **[Google Benchmark](https://github.com/google/benchmark)**: Performance benchmarking framework (Apache 2.0 License) - Development only\n\nAll dependencies are automatically fetched via CMake FetchContent when building the library, tests, or benchmarks.\n\n---\n\n_Updated on February 03, 2026_\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfx-libs%2Fnfx-datetime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnfx-libs%2Fnfx-datetime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnfx-libs%2Fnfx-datetime/lists"}