【发布时间】:2014-12-25 23:14:12
【问题描述】:
我有一个应用程序,用户输入时间/日期,然后通过 strtotime() 转换为 Unix 时间戳(用户设置自己的时区)。这通常效果很好; strtotime() 甚至设法将诸如 2014 年 3 月 9 日凌晨 2:15 的时间转换为时间戳(与用户输入“2014 年 3 月 9 日凌晨 3:15”时返回的时间戳相对应)。
但是,假设用户想要输入 2014 年 11 月 2 日上午的时间 - 具体来说,在 2:00 到 3:00 之间。是否有用户可以添加的元素来指定将使用哪个时间?
例如,如果用户通过 strtotime() 传递“2014 年 11 月 2 日上午 2:15”,则结果是对应于该日期“秒”2:15 的 UNIX 时间戳。
如何指定“第一个”2:15?
【问题讨论】:
-
我建议你使用
DateTime和DateTimeZone类而不是strtotime() -
抱歉这个幼稚的问题,但我不确定这对用户有什么用处?我意识到我最初的帖子有些不清楚,所以我编辑了它。目前,该应用程序接受来自用户的输入,例如“2014 年 11 月 2 日凌晨 2:15”。 user(不是编码器,因为我在我的 OP 中错误地写了)可以输入一个字符串来告诉程序 which 他们想要“2:15”吗?或者这是我必须使用 DateTime 的东西吗?再次抱歉,造成混乱!
-
这个基本没有解决办法。 11 月 2 日只有两个凌晨 2 点 15 分。在那段时间里你根本不做任何事情,除非你不介意可能不得不等待一个小时。这就是为什么在周末的半夜进行切换以将由此导致的问题降至最低的原因。我所知道的现实世界中的任何地方都没有官方的解决方案来解决这种歧义。
-
@deceze 什么 FUD。仅仅因为你不知道解决方案并不意味着不存在。
-
@Matt 您的解决方案是使用时区?好吧,当然,如果你有足够的信息来解决这个问题,你总是可以通过这样做来增加或减少一个小时。这仍然意味着在一个时区内,有 两个 凌晨 2:15,并且没有官方符号可以消除这两个的歧义。