首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >格式XMLGregorianCalendar

格式XMLGregorianCalendar
EN

Stack Overflow用户
提问于 2016-07-28 09:58:38
回答 2查看 651关注 0票数 3

下面是我的代码

代码语言:javascript
复制
GregorianCalendar gregory=new GregorianCalendar();
gregory.setTime(new Date());
XMLGregorianCalendar xmlGregorianCalendar=DatatypeFactory.newInstance().newXMLGregorianCalendar(gregory);
System.out.println(xmlGregorianCalendar.toString());

当我在上面代码的最后一行打印SOP时,得到的输出如下

代码语言:javascript
复制
2016-07-28T15:25:47.064+05:30

但是我想要得到输出

代码语言:javascript
复制
2016-07-28+05:30

我试过不同的形状,但没有运气。

任何建议对我都有很大帮助。

至少我们可以使用SimpleDateFormat获得这种格式吗?

通过使用simpledateformat,iam能够得到"2016-07-29+0530“。你能不能让我知道我们是否能在"05“和"30”之间带":“。我下面的代码

代码语言:javascript
复制
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-ddZ");

在Java 7和8中,可以通过以下方法获得

代码语言:javascript
复制
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-ddXXX");

但在java 6版本中不确定。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-29 07:47:31

最简单的方法是重建JDK7功能。您必须知道,新的XXX计算是基于Calendar类中已经可用的字段。他们拿着Calendar.ZONE_OFFSETCalendar.DST_OFFSET,然后就这样走了:

代码语言:javascript
复制
    int totalOffset = calendar.get(Calendar.ZONE_OFFSET) + calendar.get(Calendar.DST_OFFSET);

    StringBuilder sb = new StringBuilder();

    //handle zero offset
    if (totalOffset == 0) {
        sb.append('Z');
    }

    //convert to minutes because timezones are minute based
    totalOffset = totalOffset / 60000;
    char prefix = '-';
    if (totalOffset >= 0) {
        prefix = '+';
    }
    sb.append(prefix);

    //if negative offset, invert now
    totalOffset = Math.abs(totalOffset);

    sb.append(String.format("%02d", (totalOffset / 60)));
    sb.append(':');
    sb.append(String.format("%02d", (totalOffset % 60)));

    System.out.println(sb.toString());

我希望这段片段能帮你从那里走下去。

票数 0
EN

Stack Overflow用户

发布于 2016-07-29 07:12:54

像这样吗?注意,我没有使用格列高利,不确定你是否想要特定的格里高利日历,在这种情况下,你将不得不改变一点。

代码语言:javascript
复制
ZoneOffset myOffset = ZonedDateTime.now().getOffset();
System.out.println("ZoneOffset is " + myOffset.getId());
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String currentDate = dateFormat.format(new Date());
System.out.println(currentDate + myOffset.getId());

这些指纹:

ZoneOffset是+05:30

2016-07-29+05:30

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38633054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档