生成适用于不同时区和数据的计划

2024-05-04

我正在构建一个网络应用程序,指导人们早起,它会为用户生成七十天内的起床时间表。他们输入当前的上升时间和目标上升时间。然后,上升时间每周减少一定量,直到达到目标时间。用户必须登录网站并在预定时间“签到”。

考虑到当前登录用户的时区和夏令时,我对如何生成此计划感到有点困惑。

我的起始时区是“中性”UTC,这是生成计划的代码(相当冗长,但我仍处于实验阶段。)

date_default_timezone_set('UTC');


function timeDiff($normRisingTime, $targetRisingTime)
{
    $normRisingTime = strtotime($normRisingTime);
    $targetRisingTime = strtotime($targetRisingTime);
    $timeDiff = $normRisingTime - $targetRisingTime;
    return $timeDiff;
}


function dropPerWeek($numSeconds)
{
    $incDrop = $numSeconds / 9; //9 out of ten weeks the time will decrement and remain the same in week 10
    return $incDrop;
}



$timeDiffSecs = timeDiff("07:00","06:00"); //times for testing purposes



$decrementSecs = dropPerWeek($timeDiffSecs);

$startDate = time();

$dayNum = 1;
for($i = 0; $i < 9; $i++)
{

    $weekNum = $i + 1;  
    for($j = 0; $j < 7; $j++){
        $dayTimeStamp = $startDate + 86400 * $j;
        $dayTimeStamp = round($dayTimeStamp/60)*60; //round to nearest minute
        $dayTot = $j + $dayNum;

        if(empty($dayArray)){
            $dayArray = array(1=>$dayTimeStamp);

        }else{
            $dayArray[] = $dayTimeStamp;
        }

    }

    $dayNum = $dayTot + 1;
    $startDate = $dayTimeStamp + 86400 - $decrementSecs;
}

for($j = 0; $j < 7; $j++){
    $dayTimeStamp = $startDate + 86400 * $j;
    $dayTot = $j + $dayNum;
    $dayArray[] = $dayTimeStamp;
}


foreach ($dayArray as $key=>$value ) {
    echo $key." ".$value." ";
    echo strftime('%c', $value)."<br/>";
}

这给出了所需的输出:

1 1300695300 Mon Mar 21 08:15:00 2011
2 1300781700 Tue Mar 22 08:15:00 2011
3 1300868100 Wed Mar 23 08:15:00 2011
4 1300954500 Thu Mar 24 08:15:00 2011
5 1301040900 Fri Mar 25 08:15:00 2011
6 1301127300 Sat Mar 26 08:15:00 2011
7 1301213700 Sun Mar 27 08:15:00 2011
8 1301299680 Mon Mar 28 08:08:00 2011
9 1301386080 Tue Mar 29 08:08:00 2011
10 1301472480 Wed Mar 30 08:08:00 2011
11 1301558880 Thu Mar 31 08:08:00 2011
12 1301645280 Fri Apr 1 08:08:00 2011

我计划将这些生成的时间戳存储在我的数据库中,并根据用户设置的时区即时转换它们。 然而,当我获取这些动态生成的时间戳并将它们显示在 DST 正在运行的区域时,就会出现问题,这是欧洲/贝尔法斯特的输出

1 1300695480 Mon Mar 21 08:18:00 2011
2 1300781880 Tue Mar 22 08:18:00 2011
3 1300868280 Wed Mar 23 08:18:00 2011
4 1300954680 Thu Mar 24 08:18:00 2011
5 1301041080 Fri Mar 25 08:18:00 2011
6 1301127480 Sat Mar 26 08:18:00 2011
7 1301213880 Sun Mar 27 09:18:00 2011 //schedule jumps ahead by an hour because of DST
8 1301299860 Mon Mar 28 09:11:00 2011
9 1301386260 Tue Mar 29 09:11:00 2011
10 1301472660 Wed Mar 30 09:11:00 2011
11 1301559060 Thu Mar 31 09:11:00 2011
12 1301645460 Fri Apr 1 09:11:00 2011

随着夏令时于 3 月 27 日开始实施,我的日程提前了一个小时。这是生成此计划的错误方法吗?如何创建一个时间表,即使在夏令时期间,每周也会减少一定量,并且如果用户在时间表期间突然移动国家/地区,则可以足够灵活地转换为另一个时区。

任何指示将不胜感激。


你可以检查date('I',$timestamp)如果时间是 DST,则返回 1;如果不是,则返回 0;如果是,则进行一些数学计算。

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

生成适用于不同时区和数据的计划 的相关文章

  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 如何在 HTML / Javascript 页面中插入 PHP 下拉列表

    好吧 这是我的第二篇文章 请接受我是一个完全的新手 愿意学习 花了很多时间在各个网站上寻找答案 而且我几乎已经到达了我需要到达的地方 至少在这一点上 我有一个网页 其中有许多 javascript 函数 这些函数一起使用 google 地图
  • 检查文件权限

    我怎样才能检查file permissions 无需通过运行操作系统特定命令passthru or exec Use 文件权限 http php net fileperms功能 clearstatcache echo substr spri
  • 如何使用 Google 帐户对我们网站中的用户进行身份验证

    如何在我们的网站中使用 Google 帐户对用户进行身份验证 我希望用户重定向到谷歌登录页面 然后将他重定向到我的网站 我想要这个 PHP 实现 你要OAuth http code google com apis accounts docs
  • PHP 和 NLP:嵌套括号(解析器输出)到数组?

    想要将带有嵌套括号的文本转换为嵌套数组 以下是 NLP 解析器的输出示例 TOP S NP PRP I VP VBP love NP NP DT a JJ big NN bed PP IN of NP NNS roses 原文 我喜欢一大床
  • PHP、jQuery 和 Ajax 调用乱序

    我正在使用 jQuery 进行 Ajax 调用 我有 x 数量的 Ajax 调用附加到 div 这些 Ajax 加载请求是由 PHP foreach 循环生成的 问题是它们渲染的顺序不正确 它们被设置在数组中
  • PHP 基本身份验证 file_get_contents() [重复]

    这个问题在这里已经有答案了 我需要从网站解析一些 XML 数据 XML 数据是原始格式 但在我需要进行身份验证之前 基于基本网络服务器的身份验证 使用用户名和密码 I tried homepage file get contents htt
  • 删除 woocommerce 店面主页标题 php

    我正在使用 woocommerce 的店面主题 我需要用 php 删除主页标题 h1 我知道 css 解决方案 但我不想使用它 因为我想将 h1 添加到该页面的其他位置 并且在一个页面中包含 2 个 h1 对 seo 不利页 我也知道删除页
  • 在 null laravel 上调用成员函数 save()

    大家好 我正在使用 laravel 5 多态关系将数据保存在数据库中 但我遇到了一些问题 当我尝试将数据保存在数据库中时 它会抛出此错误 对 null 调用成员函数 save 我不知道为什么我会遇到这个错误 我正在关注多态关系的本教程在 L
  • 重新排列数组键 php [重复]

    这个问题在这里已经有答案了 我有这个数组 Array 15 gt 13 1 16 gt Mark one answer 19 gt You see a car on the hard shoulder of a motorway with
  • 如何在 Twitter Card 中传递动态图像路径?

    我在用
  • 如何解决 Laravel 8 UI 分页问题?

    我在尝试最近发布的 laravel 8 时遇到了问题 我试图找出变化是什么以及它是如何工作的 当我这样做时 我遇到了分页 laravel 8 UI 变得混乱的问题 不知何故它发生了 有人可以帮助我吗 或者经历过同样的事情 像这样我在 lar
  • 我怎样才能让这个脚本在 WordPress 上运行?

    我有这个脚本 document ready function text1 click function this hide 代码html div class div1 p class text1 text to appear when th
  • 简单的dom php解析获取自定义数据属性值

    HTML div class something ddsf PHP foreach dom gt find something data rel as this var dump this gt attr 我尝试了这个但错误 在其文档中找不
  • wordpress - 像 stackoverflow 中那样内嵌 ajax 注释

    我有一个 WordPress 博客 希望为人们提供与 stackoverflow 中添加评论相同的用户体验 有很多评论 ajax 插件 但我找不到一个可以使用的插件 它允许您在主页上内联 进入并添加评论 而无需先深入到单独的单个帖子页面 任
  • HTML 代码中的 PHP [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我用 HTML 代码编写了 PHP div div 但这出现在输出页面中 else print 我怎样才能让PHP执行 你的文件有一个 p
  • PHP 中的多个插入查询[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个 php html 表单 它将结果插入到狗展数据库中 问题是 无论我做什么 我都会收到此错误 查询失败 您的 SQL 语法有错误 检查与您的 MySQL 服务器版本相对应的手册 了解在 INSE
  • 使用来自另一个数据库的选择查询更新 mysql 表

    我有两个数据库 我想用另一个数据库表中的值更新一个表 我正在使用以下查询 但它不起作用 UPDATE database1 table1 SET field2 database2 table1 field2 WHERE database1 t
  • 谷歌日历手表过期时间超过1个月怎么办?

    我将我的 CRM 系统与 Google 日历同步 为此 我要求push notifications从我的用户 Google 日历到我的系统 我已经成功创建了手表 并将过期时间设置为2030年 但是当我收到手表事件的响应时 它显示手表的过期时
  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records

随机推荐

  • 从中间部分匹配完成建议elasticsearch

    我有一个名为搜索建议具有以下 search suggest type completion analyzer simple payloads true preserve separators false preserve position
  • 算法的最佳、最差和平均情况运行时间是多少?

    算法的最佳 最差和平均情况运行时间是多少 用最简单的术语来说 对于输入大小为n 最好的情况 最快完成时间 选择最佳输入 例如 排序算法的最佳情况是已经排序的数据 最坏的情况下 完成最慢的时间 选择了消极的输入 例如 排序算法的最坏情况可能是
  • JFreeChart:如何在 y 轴上显示小时格式

    我找不到如何修改 y 轴的标签 现在 我将 TimeSeries 与 MINUTE 类一起使用 然后将 TimeSeries 插入数据集中 它看起来像这样 final TimeSeries s1 new TimeSeries Importa
  • 设置缩放 QGraphicsItem 的变换点

    我这里有个问题 在给定的代码中 动画和转换工作得很好 但是 我想要设置变换点 根据我的说法 我必须设置 setTransformationOriginPoint item boundingRect center 然而 看起来转换是从左上角开
  • 如何在经典 ASP 中使用地理编码 API v3

    想知道是否有人可以帮助我 我正在尝试返回地址的纬度和经度结果 刚接触编码并且陷入困境 以下代码工作正常 直到地理编码从 v2 变为 v3 你能告诉我哪里错了吗 我是否需要新的 v3 密钥或密钥 提前致谢
  • 在 Swift 中枚举多个具有相同值的情况

    在 C 中 你可以让你的枚举具有以下内容 typedef enum Bar A 0 B 0 C 1 Bar 在 Swift 中我想做等价的事情 然而 编译器抱怨它不是唯一的 我如何告诉它我希望两个案例具有相同的值 enum Bar Int
  • log4j 中的异常深度

    我的 Myfaces 2 应用程序遇到实例化异常 但是通过 log4j 打印的异常会切断堆栈跟踪的其余部分 这是我所看到的 javax faces FacesException java lang InstantiationExceptio
  • Windows 8 24x24 徽章徽标图像未通过 wac 工具测试

    我正在使用工具开发 Windows 8 应用程序适用于 Windows 8 的 Microsoft Visual Studio Express当我创建要在应用商店上传的应用程序包时 它未通过 WAC 工具测试并给出以下错误 Image re
  • 当我在gunicorn上运行Flask应用程序时设置app.wsgi_app = ProxyFix(app.wsgi_app)时会发生什么?

    我使用 Flask 构建了一个基本的 Web 应用程序 并且能够使用其本机 http 服务器从虚拟机运行它 我很快意识到 通过这种设置 请求会被阻塞 我无法对资源发出并发请求 任何新请求都会等到较早的请求完成 并决定尝试使用gunicorn
  • 无法加载文件或程序集“System.Security.Principal.Windows”

    解决方案已成功编译 但是当我将现有的类文件添加到项目中后 出现此错误 无法运行指定的任务可执行文件 csc exe 不能 加载文件或程序集 System Security Principal Windows 版本 4 0 1 0 文化 中性
  • 为什么十六进制数要加上 0x 前缀?

    为什么十六进制数字前缀为0x 我理解前缀的用法 但不明白为什么的意义0x被选中 短篇故事 The 0告诉解析器它正在处理一个常量 而不是标识符 保留字 仍然需要一些东西来指定数基 x是任意选择 很长的故事 在 60 年代 流行的编程数字系统
  • 如何使用过程更改列的默认值

    这是我当前的 SQL 的样子 DELIMITER CREATE PROCEDURE updateDefaultUserRole IN rid in INT BEGIN ALTER TABLE users MODIFY rid INT 255
  • 如何在没有IB的情况下将2个按钮添加到右侧的UINavigationbar中?

    我怎样才能添加2个按钮到UINavigationBar没有XIB 2 个按钮应在右侧对齐UINavigationBar 我知道如何添加一个按钮 但是添加两个怎么样 使用 iOS 5 就这么简单 UIBarButtonItem btnShar
  • 如何使用 OR 逻辑(而不是 AND)过滤表列

    小提琴示例 http jsfiddle net fks37 我有一个 html 表 A B C D 0 1 0 1 0 1 0 0 1 0 0 1 我要过滤non zero列 使用 jQuery dataTables 不是硬性要求 只是我当
  • 将文本文件转换为逗号分隔的字符串

    我似乎没有找到与这个问题完全匹配的问题 我有一个文本文件 每行有一个文本标记 没有任何逗号 制表符或引号 我想根据文件内容创建一个逗号分隔的字符串 Input one two three Output one two three 我正在使用
  • Sqoop mysql错误-通信链路故障

    尝试运行以下命令 sqoop import connect jdbc mysql 3306 home credit risk table bureau target dir home sqoop username root password
  • 你可以将 UIGestureRecognizer 附加到多个视图吗?

    UITapGestureRecognizer tapGesture UITapGestureRecognizer alloc initWithTarget self action selector tapTapTap self view1
  • IE 302 重定向无缓存标头问题

    发布信息后返回 302 重定向 此重定向旨在重新加载当前页面 这一切都工作正常 但 IE 在标头中添加了 No Cache Cache Control no cache 我们使用 Squid 来缓存我们的内容 并将其放在标头中绕过了鱿鱼 由
  • as3 事件 - 类型强制失败?

    我正在将事件从孩子发送到父母 swf 它工作正常 直到我使用预加载器 swf 加载父级 然后父级停止从子级获取事件 我现在收到此错误 TypeError Error 1034 Type Coercion failed cannot conv
  • 生成适用于不同时区和数据的计划

    我正在构建一个网络应用程序 指导人们早起 它会为用户生成七十天内的起床时间表 他们输入当前的上升时间和目标上升时间 然后 上升时间每周减少一定量 直到达到目标时间 用户必须登录网站并在预定时间 签到 考虑到当前登录用户的时区和夏令时 我对如