当前位置: 首页 > 面试题库 >

将字符串转换为日期,差不多完成了!

南宫嘉
2023-03-14
问题内容

我正在尝试转换此字符串

2011-06-07T14:08:59.697-07:00

到目前为止,对于Java Date,这是我所做的:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S");
Date date1 = sdf.parse("2011-06-07T14:08:59.697", new java.text.ParsePosition(0));

除了最重要的部分, 时区
,几乎所有东西都很好!SimpleDateFormat的问题在于,它期望TimeZone进入,+/-hhmm而我的则是采用+/-hh:mm格式。

另外,我也不知道为什么,这可行:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.S Z");
Date date1 = sdf.parse("2011-06-07T14:08:59.697 -0700", new java.text.ParsePosition(0));

但这不是(时区之前的空间):

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SZ");
Date date1 = sdf.parse("2011-06-07T14:08:59.697-0700", new java.text.ParsePosition(0));

将这个日期2011-06-07T14:08:59.697-07:00转换为Java日期的正确格式是什么?

谢谢你的帮助!


问题答案:

看起来像XML中使用的ISO 8601标准日期和时间格式。不幸的是,Java
SimpleDateFormat不能正确支持该格式,因为它不能处理时区中的冒号。

但是,javax.xml程序包包含可以处理此格式的类。

String text = "2011-06-07T14:08:59.697-07:00";
XMLGregorianCalendar cal = DatatypeFactory.newInstance().newXMLGregorianCalendar(text);

如果您需要它,java.util.Calendar那么可以调用toGregorianCalendar()它:

Calendar c2 = cal.toGregorianCalendar();

当然,您可以得到java.util.Date

Date date = c2.getTime();

您还可以使用流行的Joda Time库,该库本身支持这种格式(并且比Java标准库具有更好的API处理日期和时间)。



 类似资料:
  • 问题内容: 是否可以将“ 20110210”转换为2011-02-10? 我试过,我得到 我究竟做错了什么? 我有新的SimpleDateFormat(“ yyyy-MM-dd”)而不是新的SimpleDateFormat(“ yyyyMMdd”) 问题答案: 这对我有用,不会引发异常:

  • 我正在尝试转换一个表示存储在SQLite中的日期的字符串。 日期存储到sqlite中,如下所示: 根据Java文档,方法: 返回此日期的字符串表示形式。格式设置相当于使用具有格式字符串“eee MMM dd hh:mm:ss zzz yyyy”的SimpleDateFormat,看起来类似于“tue Jun 22 13:07:00 PDT 1999”。则使用当前默认时区和区域设置。如果需要控制时区

  • 问题内容: 该java.util.Date 方法显示当地时区的日期。 在几种常见的情况下,我们希望以UTC格式打印数据,包括日志,数据导出以及与外部程序的通信。 在UTC中创建String表示形式的最佳方法是什么? 如何用更好的格式替换无法排序的juDate 格式(感谢@JonSkeet!)? 附录 我认为以自定义格式和时区打印日期的标准方法非常繁琐: 我一直在寻找像这样的单线: 问题答案: 遵循

  • 问题内容: 我想要这种格式 问题答案: 您需要先 解析 日期字符串(使用方法),才能 使用与格式匹配的格式获取对象。 然后使用所需的格式来 格式化 Date对象(Use 方法)以获取字符串。 输出:- 第一种格式是RFC 822 TimeZone与您的日期字符串匹配。有关在日期格式中使用的其他各种选项,请参见。

  • 查询:{“日期”:{“$GTE”:“2021-07-22T03:00:00”,“$LTE”:“2021-07-23T03:00:00”},“isdeleted”:false},字段:{},排序:{} 将字符串转换为数据格式,如下所示,我只得到时间戳 DateFormat originalFormatData=new SimpleDateFormat(“yyyy-mm-dd't'hh:mm:ss”,

  • 我在字符串中获取日期,我想将其转换为给定的日期格式。任何人都可以指导我该怎么做? 我得到这样的日期,我想把它转换成这个格式。 是每个月的默认值。