0

0

时间数据系列:故事的其余部分

花韻仙語

花韻仙語

发布时间:2024-10-09 11:15:19

|

938人浏览过

|

来源于dev.to

转载

时间数据系列:故事的其余部分

时间数据系列:故事的其余部分 - adatosystems

自从我写有关 php zmanim 的文章以来已经有一段时间了——我用它所做的工作以及我在实现它时学到的东西。但尽管耽误了时间,我始终打算继续谈话。这就是我们今天要做的

在我的第一篇文章中,我解释了如何安装和开始使用 php zmanim 库。然后在下一篇文章中,我深入研究了计算更复杂的时间以及该工具的真正威力——将最常见的拉比观点应用于各种 zmanim。我将从上次停下的地方继续,尽量减少重叠,因此,如果您需要花一点时间加快速度,我已链接到之前的帖子。

今天的目标是探索 php zmanim 的使用,超越相对简单的库使用。其中包括:

  • 制定标准时间并根据犹太教堂的特定用例进行调整(“mincha 每天在 shkia 之前 25 分钟开始”)。
  • 使用 php zmanim 库函数和方法提供非时间计算 - 例如每周托拉部分、希伯来日期以及指定日期是否为假期(如 rosh chodesh 或 sukkot)。

致谢

首先需要再次向那些使这一切成为可能的人们表示感谢。在一长串名字中最重要的是 zachary weixelbaum,他是 php zmanim 库本身的维护者;和 eliyahu hershfeld:php zmanim 所基于的 kosher java 库的创建者。

快速回顾

当我们停止时,我们有一个可靠的基本 php 脚本:

  • 设置位置变量(纬度/经度),以及时区和海拔。
  • 设置日期
  • 从这些变量创建一个 php zmanim 对象
  • 使用内置方法计算从日出到 mincha 到 tzeit hakochavim 的时间

它看起来像这样:

<?php
require 'vendor/autoload.php';
use phpzmanim\zmanim;
use phpzmanim\calendar\complexzmanimcalendar;
use phpzmanim\geo\geolocation;
# set variables:
$locname = "beit knesset chochmat shlomo, beachwood, oh";
$lat = 41.4939407;
$long = -81.516709;
$elev = 0;
$tz = 'america/new_york';
$getyear = 2024;
$getday = 20;
$getmonth = 12;
$testzmanim = zmanim::create($getyear, $getmonth, $getday, $locname, $lat, $long, $elev, $tz);
$sunrise = $testzmanim->sunrise;
echo "$sunrise\n";
?>

但日出只是开始。使用任何内置计算(在 github 自述文件页面上进行了描述),您可以拉取多种时间。例如,要让 mincha gedola 使用特定的拉比意见,我可以包括:

$gedolah = $zmanim->minchagedola16point1degrees

在上一篇博客中,我还介绍了使用 php zmanim 的格式方法使输出更具可读性的方法:

$gedolah = $gedolah->format('g:i a');

“加盐调味”——调整时间

对于那些不花很多时间在犹太教堂的人(没有责备,没有羞耻,这里仍然欢迎你),这可能并不明显,但是 - 尽管有 zman 的名字 - 很少有组织为 mincha 祈祷(下午祈祷)在 mincha ketana、mincha gedola 或 plag hamincha。

事实上,很多关于计算时间的工作与直接的“mincha gedola 现在几点了?”关系不大。以及“我们可以在一天中多晚合理安排mincha,以便每个人下班后都有时间到达这里;但也不能太晚以至于没有人来,因为他们会错过晚餐?”

如果这太理论化,请允许我分享我的犹太教堂在设置每周时间表时考虑的逻辑叠叠乐:

  • 周五晚上蜡烛点燃:shkia(日落)减去18分钟
  • 夏季星期五 mincha:plag hamincha(使用“plaghaminchaaterettorah”)减去 20 分钟
  • 冬季星期五 mincha:shkia(日落)减去 22 分钟
  • 周六 mincha:shkia 减 40 分钟
  • 周六 ma’ariv:shkia 加 50 分钟
  • 周六安息日结束:shkia 加 45 分钟
  • weekday mincha:找到本周最早的 shkia,然后减去 17 分钟

虽然我在早期博客中介绍的所有其他时间仍然很重要,但希望您开始意识到它们并不像人们想象的那么重要。

那么如何计算时间(例如 shkia/日落),然后添加或减去分钟?我们将从之前的相同脚本开始:

<?php
require 'vendor/autoload.php';
use phpzmanim\zmanim;
use phpzmanim\calendar\complexzmanimcalendar;
use phpzmanim\geo\geolocation;
# set variables:
$locname = "beit knesset chochmat shlomo, beachwood, oh";
$lat = 41.4939407;
$long = -81.516709;
$elev = 0;
$tz = 'america/new_york';
$getyear = 2024;
$getday = 20;
$getmonth = 12;
$testzmanim = zmanim::create($getyear, $getmonth, $getday, $locname, $lat, $long, $elev, $tz);

为此,我们将添加代码以获取日落:

$sunset = $zmanim->sunset;

然后我们减去 18 分钟即可得到蜡烛点亮时间:

$candles = date('g:i a', strtotime($sunset . " -18 minutes"));

没错。你只需使用 php 自己的字符串时间函数即可。如果我让你保持悬念,我很抱歉。但这真的就是这么简单。

托拉部分是什么?希伯来日期是哪一天? rosh chodesh 什么时候上映?

(……以及您的犹太教堂内和周围经常提出的其他基本但令人烦恼的问题。)

除了日期计算之外,kosherjava 库(以及 php zmanim 库)还具有快速提供上述信息的方法和函数。

首先要了解的是,到目前为止我们一直在使用的 php zmanim 对象是一个 zmanim 对象 – 一个具有特定日期的一组特定时间的对象。对于涉及日期本身的事情,我们实例化一个 jewishcalendar 对象。好消息是它的创建要容易得多。您所需要的只是年、月、日。

<?php
require 'vendor/autoload.php';
use phpzmanim\zmanim;
use phpzmanim\calendar\complexzmanimcalendar;
use phpzmanim\geo\geolocation;
# set variables:
$getyear = 2024;
$getday = 21;
$getmonth = 09;
$jewishcalendar = zmanim::jewishcalendar(carbon::createfromdate($getyear, $getmonth, $getday));

我们现在有一个 jewishcalendar 对象可以使用,并且可以使用与我们多次发现的方法类似的方法。例如:假设我们选择的日期是星期六,我们可以得到托拉部分:

$format = zmanim::format();
$parshaeng = json_decode('"' . $format->formatparsha($jewishcalendar) . '"');

(暂时忽略 $format 设置。我们稍后会深入研究它)。

CreateWise AI
CreateWise AI

为播客创作者设计的AI创作工具,AI自动去口癖、提交亮点和生成Show notes、标题等

下载

如果你运行该代码,$parshaeng 会给你:

parshas ki savo

您会注意到我们不需要提供纬度、经度、时区等。我必须强调的是,仅此功能(获取日期、托拉部分等的能力)就使 php zmanim 库变得有用一切都靠它自己,即使没有时间计算。 

我能得到希伯来语版本吗?

托拉部分?当然!这就是 $format 行的用武之地。

首先解释一下它是什么:它是一个修改 zmanim 和 jewishcalendar 等对象的方法,设置显示和输出选项。  在没有任何其他信息的情况下设置 zmanim::format() 默认为英语。但随后您可以通过以下附加行告诉系统您需要希伯来语:

$format->sethebrewformat(true)

现在,如果你运行相同的 json_decode(‘”‘ . $format->formatparsha($jewishcalendar) . ‘”‘) 行,你会得到:

כי תבוא

把它们放在一起:

<?php
require 'vendor/autoload.php';
use phpzmanim\zmanim;
use phpzmanim\calendar\complexzmanimcalendar;
use phpzmanim\geo\geolocation;
# set variables:
$getyear = 2024;
$getday = 21;
$getmonth = 09;
$jewishcalendar = zmanim::jewishcalendar(carbon::createfromdate($getyear, $getmonth, $getday));
$format = zmanim::format();
$parshaeng = json_decode('"' . $format->formatparsha($jewishcalendar) . '"');
$format->sethebrewformat(true);
$parshaheb = json_decode('"' . $format->formatparsha($jewishcalendar) . '"');
echo "$parshaheb - $parshaeng\n";

这将显示:כй תבוא – ki savo

今天星期几?

更具体地说,今天是希伯来语的哪一天?

与前面的示例一样,我们从 jewishcalendar 和格式对象开始

$jewishcalendar = zmanim::jewishcalendar(carbon::createfromdate($theyear, $themonth, $theday));
$format = zmanim::format();

然后我们添加同一行将格式设置为希伯来语。

$format->sethebrewformat(true);

最后(相当简单)我们要求一个直接的日历对象输出:

$zmandate = json_decode('"' . $format->format($jewishcalendar) . '"');

这就是您所需要的。结果是这样的:

17 elul, 5784

是的,即使我们指定了 sethebrewformat,它还是以英语显示。

我能得到实际的希伯来语版本吗?

为了让希伯来语日期完全以希伯来语显示(包括单词和字母),我们调用一个稍微不同的方法,称为希伯来语日期格式器(hebrewdateformatter)。假设(再次)您设置了初始变量并创建了一个 jewishcalendar 对象,输出希伯来语日期的代码将是:

$hebformat = hebrewdateformatter::create();
$hebformat->sethebrewformat(true);
$hebdate = json_decode('"' . $hebformat->format($jewishcalendar) . '"');
print("hebrew date: $hebdate\n");

这会给你:

hebrew date: י״ח אלול תשפ״ד

今天是吗?

有时您需要检查特定日期是否是……嗯,特定的一天。例如 rosh chodesh(新的一个月)或多日假期的一部分(例如住棚节)。

事实证明,php zmanim 方法使这变得非常简单。假设您以与其他示例相同的方式开始,

一旦你设置了 jewishcalendar 对象,它就像
一样简单

$jewishCalendar->isRoshHashana();
$jewishCalendar->isSuccos(); 

如果日期与假期匹配,它将返回“true”,您可以继续执行您想要的任何逻辑或过程,例如显示(或不显示)日期。

那么下一步是什么?

无论你相信与否,还有更多内容需要介绍。在接下来的几周内,每当我接触到它时,我都会介绍如何利用内置天文学函数进行时间计算。不管你相信与否,对于安息日和假期以及其他纪念活动的开始和结束等事情来说,拥有真正准确的时间确实很重要。

同时,如果您还有其他想要听我介绍的内容;或者,如果您有疑问、更正或荣誉,请随时将其留在下面的评论中。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
format在python中的用法
format在python中的用法

Python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。php中文网给大家带来了相关的教程以及文章,欢迎大家前来阅读学习。

888

2023.07.31

python中的format是什么意思
python中的format是什么意思

python中的format是一种字符串格式化方法,用于将变量或值插入到字符串中的占位符位置。通过format方法,我们可以动态地构建字符串,使其包含不同值。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

464

2024.06.27

js 字符串转数组
js 字符串转数组

js字符串转数组的方法:1、使用“split()”方法;2、使用“Array.from()”方法;3、使用for循环遍历;4、使用“Array.split()”方法。本专题为大家提供js字符串转数组的相关的文章、下载、课程内容,供大家免费下载体验。

761

2023.08.03

js截取字符串的方法
js截取字符串的方法

js截取字符串的方法有substring()方法、substr()方法、slice()方法、split()方法和slice()方法。本专题为大家提供字符串相关的文章、下载、课程内容,供大家免费下载体验。

221

2023.09.04

java基础知识汇总
java基础知识汇总

java基础知识有Java的历史和特点、Java的开发环境、Java的基本数据类型、变量和常量、运算符和表达式、控制语句、数组和字符串等等知识点。想要知道更多关于java基础知识的朋友,请阅读本专题下面的的有关文章,欢迎大家来php中文网学习。

1570

2023.10.24

字符串介绍
字符串介绍

字符串是一种数据类型,它可以是任何文本,包括字母、数字、符号等。字符串可以由不同的字符组成,例如空格、标点符号、数字等。在编程中,字符串通常用引号括起来,如单引号、双引号或反引号。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

651

2023.11.24

java读取文件转成字符串的方法
java读取文件转成字符串的方法

Java8引入了新的文件I/O API,使用java.nio.file.Files类读取文件内容更加方便。对于较旧版本的Java,可以使用java.io.FileReader和java.io.BufferedReader来读取文件。在这些方法中,你需要将文件路径替换为你的实际文件路径,并且可能需要处理可能的IOException异常。想了解更多java的相关内容,可以阅读本专题下面的文章。

1228

2024.03.22

php中定义字符串的方式
php中定义字符串的方式

php中定义字符串的方式:单引号;双引号;heredoc语法等等。想了解更多字符串的相关内容,可以阅读本专题下面的文章。

1205

2024.04.29

TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Git 教程
Git 教程

共21课时 | 4.2万人学习

Git版本控制工具
Git版本控制工具

共8课时 | 1.6万人学习

Git中文开发手册
Git中文开发手册

共0课时 | 94人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号