暴力计算全国油价调整日期,期待有更好的计算方式~

本贴最后更新于 1492 天前,其中的信息可能已经时移俗易

工作上,遇到了一个获取油价调整时间的需求,晚上下班了,回想了下这个问题,然后顺便百度了下油价调整周期表,结果并没找到,但是发现有个规则,也就是 10 个工作日调整一次,那么每年的第一次调整是哪天呢?带着这个疑问简单研究了下,发现是去年最后一次调整日期 +10 个工作日,得出新年的第一次调整周期,以此类推 ~
好了,明白了原理,代码就好写了 ~

油价调整规则

  • 国内油价调整规则:成品油调整周期为 10 个工作日,也就是说是十个工作日之后油价调整窗口开启一次,而工作日不包含周六日和法定假日。

    根据这个规则,我们就可以使用程序计算出其调价日期来了
    不多说,直接进入正题。
    简单实现一下,仅做记录用,估计有更好的方式来实现吧!

<?php index(); function index() { $year = $_GET['year'] ?? '2021'; $date = $_GET['date'] ?? '01-15'; $start_date = $year . '-' . $date; $end_date = $year . '-12-31'; $year_date = dateRange($start_date, $end_date); echo '<pre>'; //var_dump($year_date); $holiday = getHoliday($year); $n = 0; $zm = [6, 0];//周末 foreach ($year_date as $key => $val) { $date = substr(strstr($val, '-'), 1); $week = date("w", strtotime($val));//星期 // 周一~周5且不是假期 或者 周六到周日 且不是法定调休 即可得到工作日 if ( (!isset($holiday[$date]) && !in_array($week, $zm)) || (isset($holiday[$date]) && $holiday[$date]['holiday'] == false && in_array($week, $zm)) ) { if ($n % 10 == 0) $out[] = $val; $n++; } } var_dump(json_encode($out)); } /** * 日期范围得到一个天为单位的数组 * @param string $start_date Y-m-d:2020-06-01 * @param string $end_date Y-m-d:2020-06-07 * @return array */ function dateRange($start_date, $end_date) { if ($start_date > $end_date) { $start = strtotime($end_date); $end = strtotime($start_date); $is_reverse = true; } else { $start = strtotime($start_date); $end = strtotime($end_date); $is_reverse = false; } $i = 0; $range = []; while ($start <= $end) { $range[$i] = date('Y-m-d', $start); $start = strtotime('+1 day', $start); $i++; } return $is_reverse ? array_reverse($range) : $range; } function getHoliday($year = null) { $year = $year ?? date('y'); // $cacheKey = "holiday_{$year}"; // $holiday = \Cache::get($cacheKey); // if(is_null($holiday)){ $holiday = json_decode(file_get_contents('http://timor.tech/api/holiday/year/' . $year), true); // if($holiday['code'] == '0') // \Cache::put($cacheKey, $holiday, Carbon::now()->addYear(1)); // } return $holiday['holiday']; }
  • 程序运行结果
[ "2021-01-15", "2021-01-29", "2021-02-18", "2021-03-03", "2021-03-17", "2021-03-31", "2021-04-15", "2021-04-28", "2021-05-14", "2021-05-28", "2021-06-11", "2021-06-28", "2021-07-12", "2021-07-26", "2021-08-09", "2021-08-23", "2021-09-06", "2021-09-18", "2021-10-09", "2021-10-22", "2021-11-05", "2021-11-19", "2021-12-03", "2021-12-17", "2021-12-31" ]

2021 年我国成品油共迎 25 轮调价窗口期,首次调整时间为 1 月 15 日 24 时。

具体油价调整时间表看下图(或文字)。成品油油价调整时间为 10 个工作日一次,日期分别为:

1月15日;1月29日; 2月18日; 3月3日;3月17日;3月31日; 4月15日;4月28日; 5月14日;5月28日; 6月11日;6月28日; 7月12日;7月26日; 8月9日;8月23日; 9月6日;9月18日; 10月9日;10月22日; 11月5日;11月19日; 12月3日;12月17日;12月31日。

image.png

1 操作
ieras 在 2021-04-06 23:52:13 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...

推荐标签 标签

  • TGIF

    Thank God It's Friday! 感谢老天,总算到星期五啦!

    290 引用 • 4494 回帖 • 654 关注
  • Lute

    Lute 是一款结构化的 Markdown 引擎,支持 Go 和 JavaScript。

    29 引用 • 202 回帖 • 31 关注
  • 面试

    面试造航母,上班拧螺丝。多面试,少加班。

    325 引用 • 1395 回帖 • 2 关注
  • 外包

    有空闲时间是接外包好呢还是学习好呢?

    26 引用 • 233 回帖 • 2 关注
  • Kafka

    Kafka 是一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者规模的网站中的所有动作流数据。 这种动作(网页浏览,搜索和其他用户的行动)是现代系统中许多功能的基础。 这些数据通常是由于吞吐量的要求而通过处理日志和日志聚合来解决。

    36 引用 • 35 回帖 • 1 关注
  • Sphinx

    Sphinx 是一个基于 SQL 的全文检索引擎,可以结合 MySQL、PostgreSQL 做全文搜索,它可以提供比数据库本身更专业的搜索功能,使得应用程序更容易实现专业化的全文检索。

    1 引用 • 222 关注
  • V2EX

    V2EX 是创意工作者们的社区。这里目前汇聚了超过 400,000 名主要来自互联网行业、游戏行业和媒体行业的创意工作者。V2EX 希望能够成为创意工作者们的生活和事业的一部分。

    16 引用 • 236 回帖 • 263 关注
  • PHP

    PHP(Hypertext Preprocessor)是一种开源脚本语言。语法吸收了 C 语言、 Java 和 Perl 的特点,主要适用于 Web 开发领域,据说是世界上最好的编程语言。

    180 引用 • 408 回帖 • 485 关注
  • Latke

    Latke 是一款以 JSON 为主的 Java Web 框架。

    71 引用 • 535 回帖 • 830 关注
  • Tomcat

    Tomcat 最早是由 Sun Microsystems 开发的一个 Servlet 容器,在 1999 年被捐献给 ASF(Apache Software Foundation),隶属于 Jakarta 项目,现在已经独立为一个顶级项目。Tomcat 主要实现了 JavaEE 中的 Servlet、JSP 规范,同时也提供 HTTP 服务,是市场上非常流行的 Java Web 容器。

    162 引用 • 529 回帖 • 2 关注
  • 程序员

    程序员是从事程序开发、程序维护的专业人员。

    589 引用 • 3538 回帖
  • BAE

    百度应用引擎(Baidu App Engine)提供了 PHP、Java、Python 的执行环境,以及云存储、消息服务、云数据库等全面的云服务。它可以让开发者实现自动地部署和管理应用,并且提供动态扩容和负载均衡的运行环境,让开发者不用考虑高成本的运维工作,只需专注于业务逻辑,大大降低了开发者学习和迁移的成本。

    19 引用 • 75 回帖 • 667 关注
  • WebComponents

    Web Components 是 W3C 定义的标准,它给了前端开发者扩展浏览器标签的能力,可以方便地定制可复用组件,更好的进行模块化开发,解放了前端开发者的生产力。

    1 引用 • 8 关注
  • NetBeans

    NetBeans 是一个始于 1997 年的 Xelfi 计划,本身是捷克布拉格查理大学的数学及物理学院的学生计划。此计划延伸而成立了一家公司进而发展这个商用版本的 NetBeans IDE,直到 1999 年 Sun 买下此公司。Sun 于次年(2000 年)六月将 NetBeans IDE 开源,直到现在 NetBeans 的社群依然持续增长。

    78 引用 • 102 回帖 • 705 关注
  • 生活

    生活是指人类生存过程中的各项活动的总和,范畴较广,一般指为幸福的意义而存在。生活实际上是对人生的一种诠释。生活包括人类在社会中与自己息息相关的日常活动和心理影射。

    230 引用 • 1454 回帖 • 1 关注
  • Sublime

    Sublime Text 是一款可以用来写代码、写文章的文本编辑器。支持代码高亮、自动完成,还支持通过插件进行扩展。

    10 引用 • 5 回帖 • 2 关注
  • SendCloud

    SendCloud 由搜狐武汉研发中心孵化的项目,是致力于为开发者提供高质量的触发邮件服务的云端邮件发送平台,为开发者提供便利的 API 接口来调用服务,让邮件准确迅速到达用户收件箱并获得强大的追踪数据。

    2 引用 • 8 回帖 • 497 关注
  • etcd

    etcd 是一个分布式、高可用的 key-value 数据存储,专门用于在分布式系统中保存关键数据。

    6 引用 • 26 回帖 • 545 关注
  • Thymeleaf

    Thymeleaf 是一款用于渲染 XML/XHTML/HTML5 内容的模板引擎。类似 Velocity、 FreeMarker 等,它也可以轻易的与 Spring 等 Web 框架进行集成作为 Web 应用的模板引擎。与其它模板引擎相比,Thymeleaf 最大的特点是能够直接在浏览器中打开并正确显示模板页面,而不需要启动整个 Web 应用。

    11 引用 • 19 回帖 • 390 关注
  • QQ

    1999 年 2 月腾讯正式推出“腾讯 QQ”,在线用户由 1999 年的 2 人(马化腾和张志东)到现在已经发展到上亿用户了,在线人数超过一亿,是目前使用最广泛的聊天软件之一。

    45 引用 • 557 回帖 • 1 关注
  • 禅道

    禅道是一款国产的开源项目管理软件,她的核心管理思想基于敏捷方法 scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,完整地覆盖了项目管理的核心流程。

    6 引用 • 15 回帖 • 16 关注
  • 创造

    你创造的作品可能会帮助到很多人,如果是开源项目的话就更赞了!

    184 引用 • 1018 回帖 • 1 关注
  • SOHO

    为成为自由职业者在家办公而努力吧!

    7 引用 • 55 回帖 • 3 关注
  • 服务

    提供一个服务绝不仅仅是简单的把硬件和软件累加在一起,它包括了服务的可靠性、服务的标准化、以及对服务的监控、维护、技术支持等。

    41 引用 • 24 回帖 • 2 关注
  • OnlyOffice
    4 引用 • 23 关注
  • Office

    Office 现已更名为 Microsoft 365. Microsoft 365 将高级 Office 应用(如 Word、Excel 和 PowerPoint)与 1 TB 的 OneDrive 云存储空间、高级安全性等结合在一起,可帮助你在任何设备上完成操作。

    5 引用 • 34 回帖
  • Love2D

    Love2D 是一个开源的, 跨平台的 2D 游戏引擎。使用纯 Lua 脚本来进行游戏开发。目前支持的平台有 Windows, Mac OS X, Linux, Android 和 iOS。

    14 引用 • 53 回帖 • 555 关注