我有一个标准ISO 8601格式的字符串,其中包含从Web服务返回的日期/时间,如下所示:
String dtStart = "2010-10-15T09:27:37Z"
Run Code Online (Sandbox Code Playgroud)
如何将其转换为时间或日期等对象?我最初想要以不同的格式输出它,但是稍后需要用它做其他的东西(也就是说可能以不同的格式使用).
干杯
以下是在JavaScript中将日期序列化为ISO 8601字符串的标准方法:
var now = new Date();
console.log( now.toISOString() );
// outputs '2015-12-02T21:45:22.279Z'
Run Code Online (Sandbox Code Playgroud)
我需要相同的输出,但没有毫秒.我怎么输出2015-12-02T21:45:22Z
?
我正在尝试从标准时间戳中的数据库中获取日期并将其显示为ISO 8601.我无法轻松地在PHP中执行此操作,因此我尝试在SELECT语句中执行此操作.这就是我所拥有的,但它显示错误:
SELECT * FROM table_name ORDER BY id DESC DATE_FORMAT(date,"%Y-%m-%dT%TZ")
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?
MySQL的WEEK()
功能是什么模式产生一年中的ISO 8601周?参数2 WEEK()
根据此图表设置模式:
+--------------------------------------------------------------------+
| Mode | First day of week | Range | Week 1 is the first week ... |
|------+-------------------+-------+---------------------------------|
| 0 | Sunday | 0-53 | with a Sunday in this year |
|------+-------------------+-------+---------------------------------|
| 1 | Monday | 0-53 | with more than 3 days this year |
|------+-------------------+-------+---------------------------------|
| 2 | Sunday | 1-53 | with a Sunday in this year |
|------+-------------------+-------+---------------------------------|
| 3 | Monday …
Run Code Online (Sandbox Code Playgroud) 我有一个DateTime字符串ISO8601格式化
2012-10-06T04:13:00+00:00
Run Code Online (Sandbox Code Playgroud)
以及与此字符串不匹配的以下正则表达式
#(\d{4})-(\d{2})-(\d{2})T(\d{2})\:(\d{2})\:(\d{2})\+(\d{2})\:(\d{2})#
Run Code Online (Sandbox Code Playgroud)
我无法弄清楚为什么它不匹配.
我逃脱了元字符,对我来说似乎没问题.
编辑:
正确的方法:http://jsfiddle.net/5n5vk/3/
我需要以下列格式显示和处理UTC日期:
2013-06-28T22:15:00Z
由于此格式是ISO8601标准的一部分,因此我可以轻松地从上面的字符串创建DateTime对象.但是,我无法找到一种干净的方式(意味着没有字符串操作,如substr和replace等)以所需的格式显示我的DateTime对象.我试图调整服务器和php日期时间设置,但收效甚微.我总是得到:
$date->format(DateTime::ISO8601); // gives 2013-06-28T22:15:00+00:00
Run Code Online (Sandbox Code Playgroud)
是否有任何日期格式或配置设置将给我所需的字符串?或者我必须手动将'Z'附加到自定义时间格式?
如何将时区感知日期时间对象转换为本地时区的等效非时区感知日期时间?
我的特定应用程序使用Django(虽然,这实际上是一个通用的Python问题):
import iso8601
Run Code Online (Sandbox Code Playgroud)
....
date_str="2010-10-30T17:21:12Z"
Run Code Online (Sandbox Code Playgroud)
....
d = iso8601.parse_date(date_str)
foo = app.models.FooModel(the_date=d)
foo.save()
Run Code Online (Sandbox Code Playgroud)
这会导致Django抛出错误:
raise ValueError("MySQL backend does not support timezone-aware datetimes.")
Run Code Online (Sandbox Code Playgroud)
我需要的是:
d = iso8601.parse_date(date_str)
local_d = SOME_FUNCTION(d)
foo = app.models.FooModel(the_date=local_d)
Run Code Online (Sandbox Code Playgroud)
什么会SOME_FUNCTION是什么?
我试图解析W3C XML Schema日期,如下所示
"2012-05-15T07:08:09+03:00"
Run Code Online (Sandbox Code Playgroud)
它符合W3C XML Schema dateTime规范的ISO 8601版本.
在上述日期中,时区标识符是"+03:00"
,但SimpleDateFormat
显然不存在表示它的模式.
如果时区是"+0300"
,那么Z
(大写)将是适用的并且SimpleDateFormat
模式将是
yyyy-MM-dd'T'HH:mm:ssZ
Run Code Online (Sandbox Code Playgroud)
类似地,如果时区是"GMT+03:00"
,那么z
(小写)将是适用的并且SimpleDateFormat
模式将是
yyyy-MM-dd'T'HH:mm:ssz
Run Code Online (Sandbox Code Playgroud)
('Z'
顺便说一句,大写也适用).
那么,是否有一种SimpleDateFormat
模式或解决方法来表示上述日期而无需预处理日期字符串?
我正在尝试将Postgres日期表示格式化为ISO 8601字符串.我假设有一个Postgres函数可以做到,但我发现文档简短的例子.
我的疑问是
SELECT
now()::timestamp
Run Code Online (Sandbox Code Playgroud)
返回
[{{2016, 8, 9}, {3, 56, 55, 754181}}]
Run Code Online (Sandbox Code Playgroud)
我正在尝试将日期变成看起来更像的格式
2016-8-9T03:56:55+00:00
.
我需要对查询进行哪些更改才能实现此目的?谢谢你的帮助.
我正在使用的库和Web服务以ISO 8601格式PnYnMnDTnHnMnS
传送时间间隔:.我想将这些格式转换为秒.反之亦然.使用秒数更容易计算.
示例间隔值为:
我需要两个函数:从这些值解析为秒:iso8601_interval_to_seconds()
以及从秒到这样的间隔:iso8601_interval_from_seconds()
.
后者相当简单,因为它可以作为"PT {$ seconds} S"完成,只需要在几秒钟内完成.也许这可以通过切换到H(小时)或M(分钟)的解析器更好地完成?
第一个更难,但也许有一个技巧与PHP中的许多字符串到今天的转换器之一?我很想学习如何使用这样的函数来解析间隔.或者学习另一种选择.