我有一个这种格式的字符串:2013-07-31T19:20:30.45-07:00
,我想解析它,这样我就可以说,例如,它是星期几。但是我正在努力应对时区偏移。如果我做了date_parse("2013-07-31T19:20:30.45-07:00")
,那么我最终会得到这样的东西:
array(15) {
["year"]=> int(2013)
["month"]=> int(7)
["day"]=> int(31)
["hour"]=> int(19)
["minute"]=> int(20)
["second"]=> int(30)
["fraction"]=> float(0.45)
["warning_count"]=> int(0)
["warnings"]=> array(0) { }
["error_count"]=> int(0)
["errors"]=> array(0) { }
["is_localtime"]=> bool(true)
["zone_type"]=> int(1)
["zone"]=> int(420)
["is_dst"]=> bool(false)
}
它对时区做了一些事情,但是如果我想显示时区信息,我该如何处理420
?
如果有问题,我之前已经使用date\u default\u timezone\u set('UTC')
设置了默认时区。
更新:如果字符串具有正时区,例如2013-07-31T19:20:30.45 07:00
,则date\u parse()
输出的最后一部分是:
["is_localtime"]=> bool(true)
["zone_type"]=> int(1)
["zone"]=> int(-420)
["is_dst"]=> bool(false)
}
2013-07-31T19:20:30.45-07:00
^ y-m-d ^ time ^ timezone offset
我猜时区距离UTC大约7小时。
请记住,有些国家有半小时时区,甚至分钟时区。这可能就是为什么你能在几分钟内得到时区。
420在几分钟内就是区域。
420/60=7
我想解析它,这样我就可以,比如说,说出它是星期几。
如果你想知道星期几,你有很多选择。例如,您可以使用日期和时间函数:
$parsed = date_parse("2013-07-31T19:20:30.45-07:00");
$unix_timestamp = mktime($parsed['hour'], 0, 0, $parsed['month'], $parsed['day'], $parsed['year'], (int)$parsed['is_dst']);
echo date('l', $unix_timestamp);
那么你想显示关于时区的信息?您可以使用timezone\u name\u from\u abbr
函数获取时区名称:
$name = timezone_name_from_abbr("", -1*$parsed['zone']*60, false); // NB: Offset in seconds!
var_dump($name);
$timezone = new DateTimezone($name);
var_dump($timezone);
我想从格式为“2021-12-10T18:49:00-05:00”的字符串中解析带有时区的日期。我尝试使用“date('Y-m-dh:I:s',strotime($myDate))”进行解析。但这是第二天的返回日期。非常感谢您的帮助。
我从另一个表中提取DateTime时间戳结果,该表设置为: 当倾销特定价值的
问题内容: 有谁知道如何解析所需格式的日期字符串? 问题答案: 看到: Mozilla Core JavaScript参考:Date对象 Mozilla核心JavaScript参考:String.Split 码:
问题内容: 我正在尝试像在Python中一样解析时间戳字符串,但是在寻找一种可以处理缩写时区的解决方案时遇到了麻烦。 我正在使用的功能,但无法解析时区。是否有捷径可寻? 问题答案: 这可能不起作用,因为这些缩写不是唯一的。有关详情,请参见此页面。如果使用一组已知的输入,则可能只需要自己手动处理即可。
我已经研究过关于同一错误的其他问题,但我很难将它们应用到我的情况中。 这是我得到的错误: 致命错误:未捕获异常“exception”,消息为“DateTime::u-construct()[DateTime.-construct]:无法分析位置10(1)处的时间字符串(2013-07-22164:50:00):在/Applications/XAMPP/xamppfiles/htdocs/Festi
(我想)快速提问。如何将解析为(将时间设置为)? java.time.format.DateTimeParseException:无法分析文本“2007-07-21+00:00”:无法从TemporalAccessor获取OffsetDateTime:{offsetseconds=0},ISO解析为类型java.time.format.Parsed的2007-07-21