r28/astro-time

使用 Cake\Chronos 的天文计算时间包

v1.0.17 2019-12-19 08:33 UTC

This package is auto-updated.

Last update: 2024-09-19 19:48:10 UTC


README

Build Status

使用 Cake\Chronos 进行天文计算的时间库

要求

  • PHP >= 7.1
  • composer
  • cakephp/chronos

这是什么?

扩展 'Cake\Chronos',计算天文计算所需的数值。

  • 本地时间
  • UTC 时间
  • UT1
  • 儒略日(JD)
    • 1582/10/15 之后:公历
    • 之前:儒略历
  • 改正儒略日(MJD)
  • 儒略世纪(JC)
  • 国际原子时(TAI)
  • 地球时(TT)
  • 地球动力学时(TDT)
  • delta(T) (TT-UT1)
  • 地心坐标时(TCG)
  • 地心坐标时(TCB)

安装

使用 composer

$ composer require r28/astro-time

用法

  • 当前时间

    <?php
    use r28\AstroTime\AstroTime;
    
    $time = new AstroTime;
  • 设置任何时间

    $time = new AstroTime('2019-4-30 00:00:00');
  • 设置任何本地时区名称

    $time = new AstroTime('2019-4-30 00:00:00', 'Asia/Tokyo');
  • 不计算任何天文值(JD,TAI 等)

    $time = new AstroTime('2019-4-30 00:00:00', 'Asia/Tokyo', false);
  • 通过年、月、日等创建

    $time = AstroTime::create(2019, 4, 30, 0, 0, 0);
    // or
    $time = AstroTime::create(2019, 4, 30);     // => 2019/04/30 00:00:00
    // or
    $time = AstroTime::create(2019, 4, 30, 0, 0, 0, 'Asia/Tokyo', false);
  • 通过 UTC 创建

    $time = AstroTime::createFromUtc(2019, 4, 29, 15, 0, 0, 'Asia/Tokyo');
    // UTC: 2019/04/29 15:00:00
    // Local(Asia/Tokyo) : 2019/04/30 00:00:00
  • 通过 Unix 时间戳创建

    $time = AstroTime::createFromTimestamp(1556550000, 'Asia/Tokyo');
    // Local : 2019/04/30 00:00:00
  • 通过儒略日创建

    $time = AstroTime::createFromJulian(2458603.125, 'Asia/Tokyo');
    // Local : 2019/04/30 00:00:00

示例

# DateTime format
echo $time->format('Y-m-d H:i:s');          # 2019-04-30 00:00:00

# Local Time
echo $time->local->format('Y-m-d H:i:s');   # 2019-04-30 00:00:00

# UTC
echo $time->utc->format('Y-m-d H:i:s');     # 2019-04-29 15:00:00

echo $time->toDateTimeString();             # 2019-04-30 00:00:00

# JD
echo $time->jd;     # 2458603.125

# MJD
echo $time->mjd;    # 58602.625

# JC
echo $time->jc;     # 0.19324093086927

# JD => Time
echo AstroTime::createFromJulian($time->jd)->toDateTimeString();    # 2019-04-30 00:00:00

# JD => Datetime String
AstroTime::julian2Datestring($time->jd, 'Y-m-d H:i:s', 'Asia/Tokyo');   # 2019-04-30 00:00:00

# year, month, ...
echo $time->year;   # 2019
echo $time->month;  # 4
echo $time->day;    # 30
echo $time->hour;   # 0
echo $time->minute; # 0
echo $time->second; # 0
echo $time->timezoneName;   # Asia/Tokyo
echo $time->micro;          # 0
echo $time->dayOfWeek;      # 2
echo $time->dayOfYear;      # 119
echo $time->daysInMonth;    # 30
echo $time->quarter;        # 2

echo $time->ut1;    # 1556550000
echo $time->tt;     # 1556550068.184
echo $time->tai;    # 2019-04-29 15:00:36
echo $time->delta_t:    # 68.184
echo $time->tcg;    # 1556550069.1148
echo $time->tcb;    # 1556550088.8931
echo $time->tdb;    # 1556550068.1839