{"id":16451729,"url":"https://github.com/tpolecat/time","last_synced_at":"2025-04-04T17:12:24.035Z","repository":{"id":9999889,"uuid":"12033487","full_name":"tpolecat/time","owner":"tpolecat","description":"Pure functional date/time API. Work in progress.","archived":false,"fork":false,"pushed_at":"2013-08-31T19:58:22.000Z","size":204,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-29T10:46:17.846Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Scala","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tpolecat.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-08-11T08:49:37.000Z","updated_at":"2024-04-06T22:30:56.000Z","dependencies_parsed_at":"2022-09-22T07:00:52.109Z","dependency_job_id":null,"html_url":"https://github.com/tpolecat/time","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpolecat%2Ftime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpolecat%2Ftime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpolecat%2Ftime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tpolecat%2Ftime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tpolecat","download_url":"https://codeload.github.com/tpolecat/time/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247217222,"owners_count":20903009,"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":[],"created_at":"2024-10-11T10:10:10.226Z","updated_at":"2025-04-04T17:12:24.015Z","avatar_url":"https://github.com/tpolecat.png","language":"Scala","funding_links":[],"categories":[],"sub_categories":[],"readme":"tick\n====\n\nPure functional date/time API. In progress.\n\nMy intent is to support:\n\n * Date and time instants and durations at year, month, week, day, and fractional precisions.\n * Typeclass-based open implementation.\n * A variety of consistent external representations:\n   * Julian and modified Julian dates (integral and fractional)\n   * Julian and proleptic Gregorian calendar dates\n   * ISO-8601 calendar dates and times\n   * Arbitrary and fixed-precision fractional time\n   * POSIX date/time\n * Typesafe conversion among representations\n * Typesafe date/time arithmetic\n * Reasonable default `Show` instances (and `Enum` where applicable)\n * Timezones and offset arithmetic\n * Parsing and formatting (likely delegating to `java.util.Text` initially)\n\nMy background and personal interest makes it important to also support:\n\n * Local and mean sideral time (which requires geographic calculations)\n * Basic astronomic computations (sunrise, moonrise, moon phase, etc.)\n\nAt this point everything is in flux, so keep your distance.\n\nPreliminaries\n-------------\n\nTick relies on scalaz and shares a similar structure. Typeclasses, instances, and syntax are _a la carte_ but can also be imported _en masse_ via\n\n```scala\nimport tick._\nimport Tick._\n```\n\nThe examples here assume you have done this, as well as the analogous full import of Scalaz.\n\n\nTagging\n-------\n\nTick uses tags to differentiate uses of raw numeric types. For example, the length of a `Year` has type `Int @@ Years`, which can be treated as a bare `Int` if desired.\n\nDate arithmetic via operator sytntax requires tagged types to distinguish units. You can construct tagged types directly via scalaz's constructor `Tag[Int, Months](3)` or via Tick syntax `3.months`.\n\n\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpolecat%2Ftime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftpolecat%2Ftime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftpolecat%2Ftime/lists"}