获取今天的科普特日期

2024-05-19

我正在寻找获取今天的科普特日期与任何代码类型类似php or javascript在我的网站标题中显示科普特日期。我需要阿拉伯语或英语版本。

我试图找到它,但没有找到类似的英文内容。

参考:

  • http://www.copticchurch.net/easter.html http://www.copticchurch.net/easter.html
  • http://www.ortelius.de/kalender/coptic_en.php http://www.ortelius.de/kalender/coptic_en.php
  • http://en.wikipedia.org/wiki/Coptic_calendar http://en.wikipedia.org/wiki/Coptic_calendar

这里是扩大 http://php.net/manual/en/keyword.extends.php of the DateTime http://php.net/manual/en/book.datetime.php class.

使用示例:

$dt = new CopticDateTime;

echo $dt->coptic(); # Tout 19, 1730
echo $dt->coptic('F j, Y'); # same as above (default)

echo $dt->coptic('d.m.Y'); # 19.01.1730

echo $dt->coptic('Y/n/j'); # 1730/1/19

由于这是 DateTime 类的扩展,因此您可以进行各种日期时间修改:

$dt->modify('-2 year');
echo $dt->coptic(); # Tout 19, 1728

$dt->add(new DateInterval('P7Y5M4D'));
echo $dt->coptic(); # Amshir 26, 1735

# etc.

Code:

class CopticDateTime extends DateTime {

    private $coptic_months = [
        [ 1, 'Tout',      '09-11', '09-12'],
        [ 2, 'Baba',      '10-11', '10-12'],
        [ 3, 'Hator',     '11-10', '11-11'],
        [ 4, 'Kiahk',     '12-10', '12-11'],
        [ 5, 'Toba',      '01-09', '01-10'],
        [ 6, 'Amshir',    '02-08', '02-09'],
        [ 7, 'Baramhat',  '03-10', '03-10'],
        [ 8, 'Baramouda', '04-09', '04-09'],
        [ 9, 'Bashans',   '05-09', '05-09'],
        [10, 'Paona',     '06-08', '06-08'],
        [11, 'Epep',      '07-08', '07-08'],
        [12, 'Mesra',     '08-07', '08-07'],
        [13, 'Nasie',     '09-06', '09-06'],
    ];

    public function coptic($format = 'F j, Y')
    {
        $year = $this->getCopticYear();
        $month = $this->getCopticMonth();
        $day = $this->getCopticDay($month);

        $replace = [
            'Y' => $year,
            'F' => $month[1],
            'n' => $month[0],
            'm' => sprintf('%02d', $month[0]),
            'j' => $day,
            'd' => sprintf('%02d', $day),
        ];

        $replaceKeys = array_map(function($r) { return '{' . $r .'}'; }, array_keys($replace));
        $format = str_replace(array_keys($replace), $replaceKeys, $format);
        return str_replace($replaceKeys, $replace, $format);
    }

    private function getCopticYear()
    {
        $dateColumn = $this->format('L') ? 3 : 2;
        $date = $this->coptic_months[0][$dateColumn];
        return $this->format('Y') - 283 - ($this->format('m-d') < $date ? 1 : 0);
    }

    private function getCopticMonth()
    {
        $dateColumn = $this->format('L') ? 3 : 2;
        $date = $this->format('m-d');
        $month = null;
        foreach ($this->coptic_months as $copticMonth) {
            if ($date >= $copticMonth[$dateColumn]) {
                $month = $copticMonth;
                if ($copticMonth[$dateColumn] >= '12-00') break;
            } elseif ($month) {
                break;
            }
        }
        if (!$month) {
            $month = $this->coptic_months[3];
        }
        return $month;
    }

    private function getCopticDay(array $month)
    {
        $dateColumn = $this->format('L') ? 3 : 2;
        $monthDateTime = clone $this;
        list($m, $d) = explode('-', $month[$dateColumn]);
        $monthDateTime->setDate($this->format('Y'), $m, $d);
        if ($monthDateTime > $this) $monthDateTime->modify('-1 year');
        return $monthDateTime->diff($this)->days + 1;
    }

}

This code doesn't work correctly for dates bellow year 1900, because of the leap years.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

获取今天的科普特日期 的相关文章

随机推荐

  • 为什么使用 iPhone 或 iOS 设备在“iframe”中查看“position:fixed”时不起作用?

    我研究过 stackoverflow 似乎position fixed在 iOS 移动设备的 iframe 中 https stackoverflow com questions 15874910 position fixed and if
  • 两种情况或 if 哪个更快? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我必须制作一个 非常 轻的脚本 它将接受用户的选项并调用脚本中的函数来执行一些任务 现在我可以使用 IF 和 CASE 选项 但我想知道两
  • Qt 5.3 无法使 QCompass (QSensor) 在 Windows 8.1 上工作

    我无法让传感器在我的 Asus Transformer T100 上工作 磁力计和指南针无法启动 并且我从加速度计获得假值 始终 x 0 y 9 8 z 0 即使使用我的笔记本电脑 我总是得到相同的结果 第一段文字编辑 Initialisa
  • 如何确定lru_cache所需的maxsize?

    如果我们创建一个类似返回斐波那契数列的递归函数 并使用lru cache 真正的总督是什么max size范围 很明显 我们在计算每一项时只需要最后两项 但是设置maxsize to 2并运行第一个1000计算需要很长时间才能完成 我尝试使
  • 从 call_log 中获取最大并发通话数

    我需要帮助在 MySQL 5 0 77 中编写一个查询 根据下面所示的数据 办公室一天的通话量 返回并发电话呼叫的峰值数量 我只是想知道一天中任何特定时间同时打电话的人数最多是多少 首先 这是 MySQL 表 CREATE TABLE ca
  • 如何在reactjs中禁用未来日期?

    我没有使用任何日期选择器 代码仍然工作正常 到目前为止 我已经选择了输入类型 一切正常 现在我想禁用未来的日期 我怎么做 div div
  • 如何修复底部导航视图菜单项的位置?

    我的主页有一个底部导航视图 有四个菜单项 在 onCreate 上 四个菜单项的位置并不固定 只有在点击标签并改变位置时才会显示标签 我希望它们保持固定在适当的位置 并且标签可见 而不是在触摸时改变位置 这是我的 xml 代码 menu m
  • Rails 3:如何让用户在表单中至少选择一个复选框?

    我有一个表单 用户在提交表单之前必须选中至少一个复选框 有没有任何插件可以处理这个问题或者jquery可以应用于我的表单 不幸的是我完全是一个 jquery 菜鸟 上面的所有答案都显示了如何在客户端执行此操作 这确实可能更好 正如您的问题标
  • 运行规范时设计 2.0“layout_by_resource”弃用警告

    我正在使用 Rails 3 2 0 和 Devise 2 0 0 rc2 当我运行规范时 我收到一条弃用警告 当我正常启动 Rails 服务器时不会看到该警告 rake DEPRECATION WARNING Layout found at
  • 为什么列表理解在数组相乘方面比 numpy 快得多?

    最近我回答了THIS https stackoverflow com questions 31596979 multiplication between 2 lists 31597029 31597029想要两个列表相乘的问题 一些用户建议
  • 表与多个表具有一对一的关系

    1 一个表可以和多个表建立一对一的关系吗 为了更清楚地说明 如果我想做插入 第一个表将受到影响并且 只有一张其他表会受到影响 2 如果是这样 主键将如何 3 另外 如果我想检索多条记录 查询会是什么样子 从这些表中 谢谢 一个表可以和多个表
  • SQL 标准是否允许函数名和括号之间有空格

    检查一些 RDBMS 我发现类似的事情 SELECT COUNT a SUM b FROM TABLE 允许 注意聚合函数和括号之间的空格 谁能提供一个指向 SQL 标准本身定义的指针 任何版本都可以 编辑 以上在postgres中工作 m
  • 如何使用 Git 跟踪目录而不是文件?

    我最近开始使用 Git 但只有一件事遇到了麻烦 如何在不跟踪目录内容的情况下跟踪目录 例如 我正在开发的网站允许上传 我想跟踪上传目录 以便在分支等时创建它 但显然不是其中的文件 在开发分支中的测试文件或主控中的真实文件 在我的 gitig
  • 如何纠正 data.frame 上的字符编码

    我有一个像这样的数据框 data names lt data frame DATA c 1 5 rownames data names lt c IV xc1N JOS xc9 LUC xcdA RAM xd3N TO xd1O data
  • PostgreSQL 错误 42501:架构权限被拒绝

    我正在 ASP NET 中构建一个用户注册系统 使用 PostgreSQL 数据库来维护用户信息 作为注册过程的一部分 用户会收到一条确认消息 他们必须单击其中的链接来验证其电子邮件地址 然后 他们将进入一个可以创建密码的页面 一旦用户提供
  • PHP 正则表达式匹配字符串的最后一次出现

    我的字符串是 text1 A373R12345 我想找到该字符串最后出现的非数字数字 所以我使用这个正则表达式 0 9 然后我得到这个结果 1 A373 2 12345 但我的预期结果是 1 A373R 它有 R 2 12345 另一个例子
  • 在视图控制器之间传递数据使用从嵌入导航控制器的视图到 tabbarcontroller 的 Segue

    我有两个视图 我想将数据从一个视图传递到下一个视图 第一个视图是我想要传递给下一个视图的数据的地方 我们称之为SourceViewController 然而SourceViewController嵌入在一个NavigationViewCon
  • Django:重写表单中的 clean() 方法 - 关于引发错误的问题

    我一直在 clean 方法中做这样的事情 if self cleaned data type organized by self cleaned data organized by raise forms ValidationError T
  • JavaScript 的事件常量?

    在 Javascript 中我有这样的代码 document addEventListener mousedown mouseDownHandler 有时我可能会发胖手指 document addEventListener mouzedow
  • 获取今天的科普特日期

    我正在寻找获取今天的科普特日期与任何代码类型类似php or javascript在我的网站标题中显示科普特日期 我需要阿拉伯语或英语版本 我试图找到它 但没有找到类似的英文内容 参考 http www copticchurch net e