标签: iso8601

给定DateTime对象,如何以字符串格式获取ISO 8601日期?

鉴于:

DateTime.UtcNow
Run Code Online (Sandbox Code Playgroud)

如何获得符合ISO 8601格式的相同值的字符串?

请注意,ISO 8601定义了许多类似的格式.我正在寻找的具体格式是:

yyyy-MM-ddTHH:mm:ssZ
Run Code Online (Sandbox Code Playgroud)

c# datetime iso8601 datetime-format

738
推荐指数
15
解决办法
47万
查看次数

将符合ISO 8601的字符串转换为java.util.Date

我试图将ISO 8601格式的字符串转换为java.util.Date.

yyyy-MM-dd'T'HH:mm:ssZ如果与Locale(比较样本)一起使用,我发现该模式符合ISO8601标准.

但是,使用java.text.SimpleDateFormat,我无法转换格式正确的String 2010-01-01T12:00:00+01:00.我必须先将它转换为2010-01-01T12:00:00+0100没有冒号的.

那么,目前的解决方案是

SimpleDateFormat ISO8601DATEFORMAT = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ", Locale.GERMANY);
String date = "2010-01-01T12:00:00+01:00".replaceAll("\\+0([0-9]){1}\\:00", "+0$100");
System.out.println(ISO8601DATEFORMAT.parse(date));
Run Code Online (Sandbox Code Playgroud)

这显然不是那么好.我错过了什么或者有更好的解决方案吗?


回答

感谢JuanZe的评论,我发现了Joda-Time魔术,这里也有描述.

所以,解决方案是

DateTimeFormatter parser2 = ISODateTimeFormat.dateTimeNoMillis();
String jtdate = "2010-01-01T12:00:00+01:00";
System.out.println(parser2.parseDateTime(jtdate));
Run Code Online (Sandbox Code Playgroud)

或者更简单地说,通过构造函数使用默认解析器:

DateTime dt = new DateTime( "2010-01-01T12:00:00+01:00" ) ;
Run Code Online (Sandbox Code Playgroud)

对我来说,这很好.

java date iso8601

627
推荐指数
19
解决办法
55万
查看次数

如何解析ISO 8601格式的日期?

我需要将RFC 3339字符串解析"2008-09-03T20:56:35.450686Z"为Python的datetime类型.

strptime在Python标准库中找到了,但它不是很方便.

做这个的最好方式是什么?

python datetime iso8601 rfc3339 datetime-parsing

583
推荐指数
21
解决办法
36万
查看次数

如何将ISO 8601日期时间字符串转换为Python日期时间对象?

我正在以"2009-05-28T16:15:00"的格式获取日期时间字符串(我相信这是ISO 8601).一个hackish选项似乎是使用time.strptime并将元组的前六个元素传递给datetime构造函数来解析字符串,如:

datetime.datetime(*time.strptime("2007-03-04T21:08:12", "%Y-%m-%dT%H:%M:%S")[:6])
Run Code Online (Sandbox Code Playgroud)

我无法找到一种"更清洁"的方式来做到这一点.有吗?

python datetime iso8601 datetime-parsing

397
推荐指数
9
解决办法
34万
查看次数

Python中的ISO时间(ISO 8601)

我有一个文件.在Python中,我想花费它的创建时间,并将其转换为ISO时间(ISO 8601)字符串, 同时保留它在东部时区(ET)中创建的事实.

如何获取文件的ctime并将其转换为指示东部时区的ISO时间字符串(并在必要时考虑夏令时)?

python datetime iso8601

267
推荐指数
10
解决办法
27万
查看次数

如何在JavaScript中输出ISO 8601格式的字符串?

我有一个Date对象.如何呈现title以下代码段的部分?

<abbr title="2010-04-02T14:12:07">A couple days ago</abbr>
Run Code Online (Sandbox Code Playgroud)

我有另一个图书馆的"相对时间的单词"部分.

我尝试过以下方法:

function isoDate(msSinceEpoch) {

   var d = new Date(msSinceEpoch);
   return d.getUTCFullYear() + '-' + (d.getUTCMonth() + 1) + '-' + d.getUTCDate() + 'T' +
          d.getUTCHours() + ':' + d.getUTCMinutes() + ':' + d.getUTCSeconds();

}
Run Code Online (Sandbox Code Playgroud)

但这给了我:

"2010-4-2T3:19"
Run Code Online (Sandbox Code Playgroud)

javascript datetime iso8601

241
推荐指数
8
解决办法
24万
查看次数

OS X上的`date`命令没有ISO 8601` -I`选项?

在Bash脚本中,我想以ISO 8601格式(最好是UTC)打印当前日期时间,看起来这应该像下面这样简单date -I:

http://ss64.com/bash/date.html

但这似乎不适用于我的Mac:

$ date -I
date: illegal option -- I
usage: date [-jnu] [-d dst] [-r seconds] [-t west] [-v[+|-]val[ymwdHMS]] ... 
            [-f fmt date | [[[mm]dd]HH]MM[[cc]yy][.ss]] [+format]
Run Code Online (Sandbox Code Playgroud)

事实上,man date并未列出此选项.

任何人都知道这是为什么,或任何其他(简单)方式让我打印ISO 8601格式的日期?谢谢!

macos bash iso8601

178
推荐指数
6
解决办法
8万
查看次数

如何在moment.js中将日期格式化为ISO 8601?

这篇文档moment.ISO_8601作为格式化选项提供(来自2.7.0 - http://momentjs.com/docs/#/parsing/special-formats/),但这些都不起作用(甚至2.7.0):

var date = moment();
date.format(moment.ISO_8601); // error
moment.format(date, moment.ISO_8601); // error
Run Code Online (Sandbox Code Playgroud)

(http://jsfiddle.net/b3d6uy05/1/)

如何从moment.js获得ISO 8601?

javascript iso8601 date-formatting momentjs

177
推荐指数
7
解决办法
18万
查看次数

如何创建日期时间戳并格式化为ISO 8601,RFC 3339,UTC时区?

如何使用ISO 8601RFC 3339的格式标准生成日期时间戳?

目标是一个如下所示的字符串:

"2015-01-01T00:00:00.000Z"
Run Code Online (Sandbox Code Playgroud)

格式:

  • 年,月,日,如"XXXX-XX-XX"
  • 字母"T"作为分隔符
  • 小时,分钟,秒,毫秒,如"XX:XX:XX.XXX".
  • 字母"Z"作为零偏移的区域指示符,也就是UTC,GMT,Zulu时间.

最佳案例:

  • Swift源代码简单,简洁,直观.
  • 无需使用任何其他框架,子项目,cocoapod,C代码等.

我搜索过StackOverflow,Google,Apple等,并没有找到Swift的答案.

似乎最有前途的类NSDate,NSDateFormatter,NSTimeZone.

相关问答:如何在iOS中获得ISO 8601日期?

这是迄今为止我提出的最好的:

var now = NSDate()
var formatter = NSDateFormatter()
formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
formatter.timeZone = NSTimeZone(forSecondsFromGMT: 0)
println(formatter.stringFromDate(now))
Run Code Online (Sandbox Code Playgroud)

time date iso8601 rfc3339 swift

172
推荐指数
6
解决办法
10万
查看次数

将日期字符串解析为java.util.Date时出现非法模式字符"T"

我有一个日期字符串,我想解析它到正常日期使用java Date API,以下是我的代码:

public static void main(String[] args) {
    String date="2010-10-02T12:23:23Z";
    String pattern="yyyy-MM-ddThh:mm:ssZ";
    SimpleDateFormat sdf=new SimpleDateFormat(pattern);
    try {
        Date d=sdf.parse(date);
        System.out.println(d.getYear());
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是我有一个例外: java.lang.IllegalArgumentException: Illegal pattern character 'T'

所以我想知道我是否必须拆分字符串并手动解析它?

顺便说一句,我试图在T的两边添加单引号字符:

String pattern="yyyy-MM-dd'T'hh:mm:ssZ";
Run Code Online (Sandbox Code Playgroud)

它也行不通.

java date iso8601 simpledateformat

164
推荐指数
2
解决办法
11万
查看次数