- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个关于处理夏令时的一般性问题。我想它不是真正特定于 PHP 的,但我是用 PHP 编写的,所以我认为包含它不会有什么坏处。
我有一个使用 jquery fullcalendar 构建的日历应用程序。用户在他们的本地时区查看事件,我的服务器将它们存储为 mysql 中的 UTC 日期时间。 (stackoverflow 上的其他问题表明这是处理时区的最佳方式。)因此每次用户在日历上保存或查看事件时都会进行一次转换。这工作正常,但我对如何最好地处理夏令时感到困惑。
例如,假设 EST(东部标准时间)时区的用户在每天重复的下午 3 点不是夏令时时创建了一个事件。我的 PHP 代码使用标准 DateTime(和 DateTimeZone)类在 UTC-5:00 之前在 UTC 和 EST 之间进行转换。当夏令时激活时,时钟提前一小时,PHP 将在 UTC-4:00 之前在 UTC 和 EST 之间转换。从用户的角度来看,事件从原来的下午 3 点转移到下午 4 点。这不是我的用户和我想要的。无论夏令时如何,下午 3 点的事件都应该是下午 3 点的事件。处理这个问题的最佳方法是什么? PHP 中有没有办法忽略夏令时?
我的代码:
$getDate = new DateTime($storedDate, new DateTimeZone('UTC'));
$getDate->setTimezone(new DateTimeZone('America/New_York'));
$getDateString = $getDate->format('Y-m-d H:i:s');
更多信息:(从我下面的评论中复制)
- 仅存储重复事件的第一次出现。所有其他事件都是根据用户请求的日历 View (月、周或日 View )即时创建的。按照我的编码方式,它只会创建在 View 中可见的事件。
- 问题是,我还需要在其他时区保持不变。继续原来的例子,下午 3 点应该保持在美国东部标准时间下午 3 点(不管夏令时),但如果在中部时间查看事件,事件也应该保持在下午 2 点(不管夏令时)。
本质上,我需要以某种方式忽略夏令时。
最佳答案
您是否尝试过查看 DateTimeZone::getTransitions() ?
http://www.php.net/manual/en/datetimezone.gettransitions.php
特别是使用 [offset] 和 [isdst] 属性。
以您的 EST 为例,在 8 月,即使您处于美国东部时间,您也使用 -5 的 EST 转换保存值。
如果他们在 1 月份查看该值,则在拉回该值时添加 5,如果您在 8 月查看该值,则添加 4。
这将适用于 95% 的情况,我假设开关是一致的。如果 Eastern 决定与 Central 合并,您可以让过渡运行 –5/–4/–5/–4/–5/–5/–6/–5/–6/–6那会把事情搞砸的。
没有 Elixir 。我不知道你的应用程序结构的细节,你可能只需要尝试在你所在的任何一天的午夜添加 3 小时,以便将任何重复的每日约会存储为仅限时间。
关于PHP 夏令时难题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21946276/
我想将 JavaScript 函数移动到 来自输入标签的标签,但它不起作用。 这个有效: 这不是: function FieldOnKeyUp() { this.value=this.
我遇到了这个问题:说给定两个权重1和3,您可以权衡1,2(乘以3-1),3,4(乘以3 + 1)(使用平衡的两面)。现在找到最小的砝码数量,以便可以测量1到1000。 答案是1,3,9,27 ...
这是代码 war 的套路,我似乎无法弄明白。我以前从未使用过 JavaScript。 我知道答案可能很简单,但即使经过许多小时的搜索,我似乎也无法弄清楚他们在寻找什么。我知道 greet 函数中的 n
在完成一项学校作业时,我有一个抽象类 Person、一个扩展 Person 的抽象类 Student 和一个扩展学生的普通类 CollegeStudent。 CollegeStudent 从文件中读取
下面的代码让我很头疼 var somearr = [1, 2, 3]; function operations() { for (var i
我在 3 个文件中有以下代码: Defines.h #ifndef Defines_h extern const unsigned int SIZE; #endif Defines.cpp #incl
我的任务是尝试创建一个从文本文档中删除个人信息的自动化系统。 电子邮件、电话号码相对容易删除。名字不是。这个问题很难,因为文档中有需要保留的名称(例如,引用资料、名人、人物等)。需要从内容中删除作者姓
我卡在这里了... #include #define DBG_LVL(lvl, stmt) \ do{ \ if(lvl>1) printf stmt; \ }while(0) #defi
我正在尝试使用动态编程解决类似桥梁和 torch 的问题。有关此问题的更多信息,请参见维基百科 (http://en.wikipedia.org/wiki/Bridge_and_torch_probl
我有数组 A[0...N]的 double和数组 B[0...N]的 int .每B[i]变化在 [0...P] .我只需要计算数组 C[0...P] : C[j] = SUM( A[i] : B[i
我目前在使用 jQuery 中的scrollTop() 函数时遇到困难。目前,平滑滚动功能正在滚动经过预期部分,然后在功能完成运行后弹回该部分。我在本文末尾添加了一个 jsFiddle,但这是我目前的
PHP代码 $t = strtotime( '2012-09-21T03:00:00+00:00 America/Chicago' ); $t2 = date('c',$t); echo $t2;
我知道使用 .运算符将函数链接在一起,如下所示: isLessThanZero x | x a -> a -> a 还可以看到: subtract :: Num a => a -> (a ->
PHP代码 $t = strtotime( '2012-09-21T03:00:00+00:00 America/Chicago' ); $t2 = date('c',$t); echo $t2;
我创建了两个 jar 文件 my.common.jar,其中包含辅助类和方法(主要是静态方法)。我还创建了一个 jar 文件 test.jar,其中包含一个 main 方法,该方法调用 my.comm
已解决:@Desolator 已让我的代码在下面的评论中完全正常工作 好的,所以我创建了 3 个类,它们都相互链接: 启动画面 > 项目分配 > CompareSignature 我想谈论的类是闪屏类
我正在尝试使用 firestore 的 .where() 功能来检测某个字符串是否在数据库的数组中。我曾尝试通过添加方括号和其他东西来表示数组的一部分来操纵函数的第一个参数,但无济于事。 //in t
我有一个 PHP 系统,允许用户以 1 - 5 的范围对照片进行投票,我想要做的是突出显示两个人给彼此相同的投票/分数的地方。我目前无法弄清楚我的 PHP 函数的 SQL。 数据库看起来像这样 id,
我在使用 SQLAlchemy 处理 Unicode 时遇到了一个奇怪的问题。简而言之,当我将 Python unicode 字符串插入 Unicode 列时我的 MySQL 数据库,我可以毫不费力地
我正在尝试使用 Selenium 自动执行 Google 翻译网络界面(但无需了解 Selenium 即可理解此问题,只需要知道它会找到元素并单击它们即可)。我一直在选择要翻译的语言。 我无法打开下拉
我是一名优秀的程序员,十分优秀!