nickmoline/laravel-stardate

Laravel 包,用于将日期转换为星历日期。

v1.0.0 2023-07-24 07:08 UTC

This package is auto-updated.

Last update: 2024-09-25 03:42:43 UTC


README

基于《星际迷航》星舰时代的 Laravel Carbon 扩展宏。

星历计算器

  • Carbon::actdStardate() 将 Carbon 日期转换为 ST:ACTD 角色扮演游戏中所使用的伪星历,该格式定义在 他们的玩家手册
  • Carbon::tngStardate(int $precision = 1) : string 使用trekguide.com反向工程出的公式,将 Carbon 日期格式化为 TNG 星历。您可以在括号中传递一个整数来调整小数精度(默认为 1 位数字)
  • Carbon::createFromStardate(float|string $stardate) : Carbon 从给定的星历创建一个 Carbon 实例(允许您将其转换回相应的地球日期)
  • Carbon::contemporaryStardate(int $precision = 1) : string 使用与 Carbon::tngStardate() 相同的公式将 Carbon 日期格式化为 TNG 星历,但首先增加 331 年。这样,1987 年的日期看起来就像是在 2363 年(允许与 TNG 时代系列剧播出的日期大致对应)。对于在 2318 年之前计算的日期,这将产生负的星门。

《星际迷航》假日

dansoppelsa/laravel-carbon-macros 的启发,增加了一些用于《星际迷航》特定假日的功能。

  • isHolidayName() 函数,如果给定假日则返回 true
  • nextHolidayName() 函数,返回当前日期对象之后给定假日的下一个实例的 Carbon 日期
  • lastHolidayName() 函数,返回当前日期对象之前给定假日的上一个实例的 Carbon 日期
  • untilHolidayName() 函数,返回表示当前日期对象之后给定假日下一个实例的时间的 CarbonInterval
  • sinceHolidayName() 函数,返回表示从给定假日上一个实例到当前日期对象的时间的 CarbonInterval

还有一个通用的 trekHoliday 宏,如果当前假日是假日,则返回当前假日的字符串名称,还有一个 isTrekHoliday,如果当前日期对象是任何这些假日,则返回 true。

当前可用假日

  • 首次接触日4月5日
  • 《星际迷航》日9月8日,这是《星际迷航》首播的周年纪念日,CBS/Paramount+ 通常会在这天大肆宣传
  • 皮卡德船长日6月16日
  • 边疆日4月14日
    • 这有点棘手,我们知道它是在4月,并且庆祝的是 NX-01 的发射。我们在《破碎之碗》中得到的具体日期是4月16日,但根据那个位置,发射至少提前了一天。Startrek.com 提到了它,在4月14日发了一条帖子,所以我们选择了那个日期。
  • 祖先之夜4月22日

假日示例

$date = Carbon::parse("April 5, 2023");
$date->isFirstContactDay(); # true
$date->isStarTrekDay(); # false
$date->nextAncestorsEve(); # "April 22, 2023"
$date->untilNextAncestorsEve(); # "17 days"
$date->trekHoliday(); # "First Contact Day"
$date->isTrekHoliday(); # true

$date->addDays(2);
$date->trekHoliday(); # null
$date->isTrekHoliday(); # false
$date->sinceFirstContactDay(); # "2 days"