时间数据系列:故事的其余部分
大家好,我们又见面了啊~本文《时间数据系列:故事的其余部分》的内容中将会涉及到等等。如果你正在学习文章相关知识,欢迎关注我,以后会给大家带来更多文章相关文章,希望我们能一起进步!下面就开始本文的正式内容~

时间数据系列:故事的其余部分 - 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 设置。我们稍后会深入研究它)。
如果你运行该代码,$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”,您可以继续执行您想要的任何逻辑或过程,例如显示(或不显示)日期。
那么下一步是什么?
无论你相信与否,还有更多内容需要介绍。在接下来的几周内,每当我接触到它时,我都会介绍如何利用内置天文学函数进行时间计算。不管你相信与否,对于安息日和假期以及其他纪念活动的开始和结束等事情来说,拥有真正准确的时间确实很重要。
同时,如果您还有其他想要听我介绍的内容;或者,如果您有疑问、更正或荣誉,请随时将其留在下面的评论中。
好了,本文到此结束,带大家了解了《时间数据系列:故事的其余部分》,希望本文对你有所帮助!关注golang学习网公众号,给大家分享更多文章知识!
如何用 Java 编写自定义比较器函数?
- 上一篇
- 如何用 Java 编写自定义比较器函数?
- 下一篇
- 免费声音放松实用程序
-
- 文章 · php教程 | 39分钟前 | php 自定义函数 str_replace 千分位格式化 number_format
- PHP千分位格式化函数使用方法
- 250浏览 收藏
-
- 文章 · php教程 | 1小时前 |
- PHP跨域请求处理与CORS配置详解
- 407浏览 收藏
-
- 文章 · php教程 | 1小时前 |
- PHPMyAdminSQL锁等待解决技巧
- 428浏览 收藏
-
- 文章 · php教程 | 1小时前 |
- Laravel多对多表单预选数据技巧
- 256浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- ChatExcel酷表
- ChatExcel酷表是由北京大学团队打造的Excel聊天机器人,用自然语言操控表格,简化数据处理,告别繁琐操作,提升工作效率!适用于学生、上班族及政府人员。
- 3211次使用
-
- Any绘本
- 探索Any绘本(anypicturebook.com/zh),一款开源免费的AI绘本创作工具,基于Google Gemini与Flux AI模型,让您轻松创作个性化绘本。适用于家庭、教育、创作等多种场景,零门槛,高自由度,技术透明,本地可控。
- 3425次使用
-
- 可赞AI
- 可赞AI,AI驱动的办公可视化智能工具,助您轻松实现文本与可视化元素高效转化。无论是智能文档生成、多格式文本解析,还是一键生成专业图表、脑图、知识卡片,可赞AI都能让信息处理更清晰高效。覆盖数据汇报、会议纪要、内容营销等全场景,大幅提升办公效率,降低专业门槛,是您提升工作效率的得力助手。
- 3454次使用
-
- 星月写作
- 星月写作是国内首款聚焦中文网络小说创作的AI辅助工具,解决网文作者从构思到变现的全流程痛点。AI扫榜、专属模板、全链路适配,助力新人快速上手,资深作者效率倍增。
- 4563次使用
-
- MagicLight
- MagicLight.ai是全球首款叙事驱动型AI动画视频创作平台,专注于解决从故事想法到完整动画的全流程痛点。它通过自研AI模型,保障角色、风格、场景高度一致性,让零动画经验者也能高效产出专业级叙事内容。广泛适用于独立创作者、动画工作室、教育机构及企业营销,助您轻松实现创意落地与商业化。
- 3832次使用
-
- PHP技术的高薪回报与发展前景
- 2023-10-08 501浏览
-
- 基于 PHP 的商场优惠券系统开发中的常见问题解决方案
- 2023-10-05 501浏览
-
- 如何使用PHP开发简单的在线支付功能
- 2023-09-27 501浏览
-
- PHP消息队列开发指南:实现分布式缓存刷新器
- 2023-09-30 501浏览
-
- 如何在PHP微服务中实现分布式任务分配和调度
- 2023-10-04 501浏览

