php - 国际固定日历/科茨沃斯日历
问题描述
我正在尝试建立一个将日历从公历转换为 IFC 的网站。转换很简单,但我在 PHP 中不够精通,无法进行所有计算以显示今天的日期。
我设法从工作变量 $dayofyear 打印当前月份,该变量计算自 1 月 1 日以来的天数(手动输入),然后通过以下方式显示当前月份:
$now = time(); // or your date as well
$your_date = strtotime("2020-01-01"); //I'd also love to get this replaced with a string automatically starting from jan 1st of current year so I don't have to update it every year.
$dayofyear = $now - $your_date;
$day = round($dayofyear / (60 * 60 * 24));
$date = round($dayofyear / (7));
if ($day > 0 && $day < 27) {
echo 'January';
}
elseif ($day > 28 && $day < 55) {
echo 'February';
}
elseif ($day > 56 && $day < 83) {
echo 'March';
}
elseif ($day > 84 && $day < 111) {
echo 'April';
}
elseif ($day > 112 && $day < 139) {
echo 'May';
}
elseif ($day > 140 && $day < 168) {
echo 'June';
}
elseif ($day > 169 && $day < 196) {
echo 'Sol';
}
elseif ($day > 197 && $day < 224) {
echo 'July';
}
elseif ($day > 225 && $day < 252) {
echo 'August';
}
elseif ($day > 253 && $day < 280) {
echo 'September';
}
elseif ($day > 281 && $day < 308) {
echo 'October';
}
elseif ($day > 309 && $day < 336) {
echo 'November';
}
elseif ($day > 337 && $day < 365) {
echo 'December';
}
else {
echo '<i>error...</i>';
}
此外,将不胜感激为此的替代方案,以使代码更短。我一直在尝试通过javascript来实现这一点,但没有成功......
解决方案
好的,现在我明白了这个问题。我认为您可以使用模数运算符并将一年中的公历除以 28 以获得 IFC 的月份和日期。然后将其转换为正确的月份名称。
ifcDate(0);
$time = strtotime('1/29/2020');
ifcDate(date('z', $time));
ifcDate(363);
// Today
ifcDate(date('z'));
// Other dates
$time = strtotime('2/26/2020');
ifcDate(date('z', $time));
$time = strtotime('06/25/2020');
ifcDate(date('z', $time));
function ifcDate($day) {
// gregorian day starts at 0
$ifcMonth = ceil(($day + 1) / 28);
$ifcDay = ($day % 28) + 1;
// Month 7 is Sol
if ($ifcMonth < 7) {
$dateObj = DateTime::createFromFormat('!m', $ifcMonth);
$month = $dateObj->format('F');
} elseif ($ifcMonth == 7) {
$month = 'Sol';
} else {
$dateObj = DateTime::createFromFormat('!m', $ifcMonth - 1);
$month = $dateObj->format('F');
}
echo "$ifcMonth $ifcDay" . "<br />";
echo "$month $ifcDay" . "<br />";
}
推荐阅读
- regex - 用于逗号或/和空格分隔的正则表达式
- session-cookies - Katalon 无法发送请求
- python - 在 Python 中使用 if 语句进行字符串检查
- android - 如何确保回收站视图适配器项目占据整个屏幕高度
- r - 将 ShinyWebApp 部署到 rstudio-connect 期间的问题
- sdn - 是否可以从 ODL 控制器更改 Mininet 拓扑中 OVS 交换机的配置?
- python - 我可以在窗口上获取注册表值的修改时间吗?
- reactjs - 每次打开应用程序时,如何在本机反应中创建自动背景图像更改?
- sql - 在 1 列中插入 3 列 SQL
- android - 如何在调用通知 UI 显示时以编程方式停止前台服务通知“噪音”