相关疑难解决方法(0)

如何在Java中获取UTC或GMT中的当前日期和时间?

当我创建一个新Date对象时,它会初始化为当前时间但在本地时区.如何获得GMT中的当前日期和时间?

java timezone localization date gmt

450
推荐指数
18
解决办法
79万
查看次数

如何获得ISO 8601格式的当前时刻,包括日期,小时和分钟?

什么是获得ISO 8601格式的当前时刻,UTC 的最优雅方式?它应该看起来像:2010-10-12T08:50Z.

例:

String iso8601 = DateFormat.getDateTimeInstance(DateFormat.ISO_8601).format(date);
Run Code Online (Sandbox Code Playgroud)

java

302
推荐指数
14
解决办法
32万
查看次数

如何在Android Project中使用ThreeTenABP

我正在添加这个问题,因为我是Java和Android的新手,我搜索了几个小时试图解决这个问题.答案来自相关答案的组合,所以我想我会记录我为其他可能正在努力的人学到的东西.见答案.

对于一些背景知识,我的经验主要是PHP的Web开发和一点Ruby.我唯一的操作系统是Linux(Ubuntu Studio),我(不情愿地)在Android Studio 2.1.2中开发我的第一个Android应用程序.我的Java设置如下:

>java -version
> openjdk version "1.8.0_91"
> OpenJDK Runtime Environment (build 1.8.0_91-8u91-b14-3ubuntu1~15.10.1-b14)
> OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)
Run Code Online (Sandbox Code Playgroud)

datetime android android-gradle-plugin threetenbp threetenabp

169
推荐指数
3
解决办法
2万
查看次数

simpledateformat使用'Z'文字解析日期

我试图解析一个看起来像这样的日期:

yyyy-MM-dd'T'HH:mm:ss
Run Code Online (Sandbox Code Playgroud)

这是http://www.ietf.org/rfc/rfc3339.txt的有效日期."Z"字面意思"暗示UTC是指定时间内的首选参考点."

如果我尝试使用SimpleDateFormat和此模式解析它:

yyyy-MM-dd'T'HH:mm:ssz
yyyy-MM-dd'T'HH:mm:ssZ
Run Code Online (Sandbox Code Playgroud)

它将被解析为2010年4月5日17:16:00美国东部时间2010年

SimpleDateFormat无法使用以下模式解析字符串:

yyyy-MM-dd'T'HH:mm:ss
Run Code Online (Sandbox Code Playgroud)

我可以显式设置TimeZone在SimpleDateFormat上使用以获得预期的输出,但我不认为这是必要的.有什么我想念的吗?有替代日期解析器吗?

java timezone datetime parsing simpledateformat

73
推荐指数
7
解决办法
12万
查看次数

Android中的ISO 8601字符串到日期/时间对象

我有一个标准ISO 8601格式的字符串,其中包含从Web服务返回的日期/时间,如下所示:

String dtStart = "2010-10-15T09:27:37Z"
Run Code Online (Sandbox Code Playgroud)

如何将其转换为时间或日期等对象?我最初想要以不同的格式输出它,但是稍后需要用它做其他的东西(也就是说可能以不同的格式使用).

干杯

java parsing android iso8601

46
推荐指数
2
解决办法
6万
查看次数

JSON日期到Java日期?

我无处可寻.我从返回标准JSON日期的API中获取一些JSON.您可以通过在JavaScript控制台中运行此代码来查看格式:

> new Date().toJSON();
"2010-10-27T11:58:22.973Z"
Run Code Online (Sandbox Code Playgroud)

好吧,实际上,我正在使用的API不是返回毫秒部分,有时它会返回一个时区而不是Z,因此日期可能看起来像这些中的任何一个:

  • 2010-10-27T11:58:22Z
  • 2010-10-27T11:58:22+03:00

解析这些日期有点麻烦.有没有办法解析这些日期,使用org.json

我目前的解决方案是:

public static Date parseDateTime(String dateString) {
    if (dateString == null) return null;
    DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm:ssZ");
    if (dateString.contains("T")) dateString = dateString.replace('T', ' ');
    if (dateString.contains("Z")) dateString = dateString.replace("Z", "+0000");
    else
        dateString = dateString.substring(0, dateString.lastIndexOf(':')) + dateString.substring(dateString.lastIndexOf(':')+1);
    try {
        return fmt.parse(dateString);
    }
    catch (ParseException e) {
        Log.e(Const.TAG, "Could not parse datetime: " + dateString);
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

啊!

java json

33
推荐指数
3
解决办法
10万
查看次数

W3C XML的Java SimpleDateFormat模式带有时区

我试图解析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模式或解决方法来表示上述日期而无需预处理日期字符串?

java date iso8601 simpledateformat

30
推荐指数
3
解决办法
4万
查看次数

如何在Java中转换Youtube API V3持续时间

Youtube V3 API使用ISO8601时间格式来描述视频的持续时间.有点像"PT1M13S".现在我想将字符串转换为秒数(例如在这种情况下为73).

是否有任何Java库可以帮助我轻松完成Java 6下的任务?或者我必须自己做正则表达式的任务?

编辑

最后,我接受@Joachim Sauer的回答

示例代码Joda如下.

PeriodFormatter formatter = ISOPeriodFormat.standard();
Period p = formatter.parsePeriod("PT1H1M13S");
Seconds s = p.toStandardSeconds();

System.out.println(s.getSeconds());
Run Code Online (Sandbox Code Playgroud)

java youtube-api time-format

18
推荐指数
3
解决办法
7084
查看次数

使用UTC时区将ISO8601日期字符串解析为日期

我正在尝试从/向JavaScript应用程序序列化/反序列化日期.

服务器端,我用java,JodaTime安装就可以了.我发现了如何使用UTC时区序列化到ISO,但无法找到如何进行反向操作.

这是我的代码

public static String getIsoDate( Date date )
{
    SimpleDateFormat  dateToIsoDateString = new SimpleDateFormat( ISO_8601_DATE_FORMAT );
    TimeZone tz = TimeZone.getTimeZone("UTC");
    dateToIsoDateString.setTimeZone( tz );
    return dateToIsoDateString.format( date );
}

// this will return a date with GMT timezone
public static Date getDateFromIsoDateString( String iso8601date )
{
    DateTimeFormatter jodaParser = ISODateTimeFormat.dateTimeNoMillis();
    return jodaParser.parseDateTime( iso8601date ).toDate();
}
Run Code Online (Sandbox Code Playgroud)

我不介意使用或不使用Joda,只需要一个快速和有效的解决方案,

谢谢

javascript java date jodatime mongodb

13
推荐指数
2
解决办法
3万
查看次数

解析DateFormat时的Java时区

我有解析日期的代码如下:

String ALT_DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss.SSSZ";
SimpleDateFormat sdf = new SimpleDateFormat(
                    ALT_DATE_TIME_FORMAT);
Date date = sdf.parse(requiredTimeStamp);
Run Code Online (Sandbox Code Playgroud)

它工作正常,突然,这停止了工作.事实证明,管理员在服务器上进行了一些配置更改,并且当前正在返回日期为"2010-12-27T10:50:44.000-08:00",这是上述模式无法解析的.我有两个问题:

第一个是什么模式将以上述格式解析JVM返回的日期(具体来说,只是'-08:00'作为时区)?第二,在Linux RHEL 5服务器上究竟会改变这样的设置,以便我们在将来意识到这些变化?

java timezone datetime iso8601 date-format

10
推荐指数
2
解决办法
3万
查看次数