- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试获取日期格式为 ddMMyyy
的 XMLGregorianCalendar
。当我尝试将其从 Date
转换时,它一直困扰着我:
java.lang.IllegalArgumentException: Leading zeros are not allowed.
有办法解决吗?
谢谢!
DateFormat format = new SimpleDateFormat("ddMMyyyy");
XMLGregorianCalendar gTest = DatatypeFactory.newInstance().newXMLGregorianCalendar(format.format(new Date(1, 9, 2018)));
最佳答案
首先,如果可以避免的话,就不应该使用 Date
类。您可能还想避免使用 XMLGregorianCalendar
。 Date
和 SimpleDateFormat
早已过时,而后者尤其以麻烦而闻名。今天,我们有了更好的现代 Java 日期和时间 API java.time
。有时它也可能取代 XMLGregorianCalendar
。
但相信你的话,你有一个老式的 Date
对象 - 可能来自你现在无法更改或不想更改的旧版 API。您需要将其转换为 XMLGregorianCalendar
。我仍然更喜欢使用 java.time
进行转换。
Date oldfashionedDate = // some Date equal to 1 August 2018 at 00:00 in my time zone;
LocalDate modernDate = oldfashionedDate.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDate();
XMLGregorianCalendar gTest = DatatypeFactory.newInstance()
.newXMLGregorianCalendar(modernDate.toString());
System.out.println(gTest);
打印:
2018-08-01
您要求提供格式ddMMyyyy
。你不能拥有那个。或者更准确地说,唯一的方法是在字符串中,而不是在 XMLGregorianCalendar
中。 XMLGregorianCalendar.toString()
生成 XML 格式,这是在 XML 架构中定义的(请参阅底部的链接)。例如 2018-08-01
、2018-08-01T00:00:00
或 2018-08-01T00:00:00+02: 00
.
我无法重现您的IllegalArgumentException
。在我的 Java 10 上,01082018
的前导 0 被接受(在 Java 8 上也是如此)。然而,数据类型工厂将字符串解析为年份 1082018(从现在起超过一百万年),并且由于字符串到此结束,因此它没有解析任何月份或月份中的某一天。因此生成的 XMLGregorianCalendar
中只有一年,没有定义其他字段。
newXMLGregorianCalendar(String)
仅接受 XML 格式。显然一年是可以接受的。格式仍然遵循本答案底部链接的规范。
不过,接受前导 0 可能是一个错误,因为前导零不会从 toXMLFormat
方法中打印出来,根据newXMLGregorianCalendar(String)
的文档。
关于java - Xmlgregoriancalendar 不允许在 ddMMyyyy 中前导零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51224831/
我正在尝试匹配类型的日期:ddmmyyyy ,例如:04072001到目前为止我有这个: ^(?:(?:31(?:0?[13578]|1[02]))\1|(?:(?:29|30)(?:0?[1,3-9
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 3 年前。 Improve th
这可能是一个简单的问题,但是如何在 Eclipse 中获取格式为 ddmmyyyy 的系统日期。所以没有任何字母、空格或其他字符? 最佳答案 String todayAsString = new Si
我正在尝试使用以下代码解析 DDMMYYYY 格式的字符串日期,但它返回 false 即使 16062001 是 DDMMYYYY 中的有效日期 格式。 DateTime.TryParseExact(
我决定让用户输入 DDMMYYY 来获取他们的生日。如何在 javascript 中根据该数据创建 UNIX 时间戳? 另外,一旦我有了unix时间戳,如何用英语显示它,即2000年1月5日星期一?
我的日期 dataframe 看起来像这样: Date Values 1JAN2018 80 23DEC2019 21.3
我正在努力将日期转换为 ddmmyy 格式,而不是 ddmmyyyy。 convert 函数允许各种巧妙的格式设置,但没有足够接近的功能可以使用 REPLACE 进行修复。 如有任何帮助,我们将不胜感
我尝试获取日期格式为 ddMMyyy 的 XMLGregorianCalendar。当我尝试将其从 Date 转换时,它一直困扰着我: java.lang.IllegalArgumentExcepti
您好,我将 datagridview 的数据源设置为我的 sql 语句,该语句从数据库中的表中选择日期,在 gridview 本身上它显示为 dd/mm/yyyy 但是当我从 datagridview
我有一个存储日期的 8 位 int。例如 12041989 是 1989 年 4 月 12 日。我应该声明什么类型的变量以及如何提取年份? 编辑:根据你告诉我的,我是这样做的:(我必须通过输入当前日期
我必须从日期发送 DDMMYYY 日期才能与 API 通信。 NSDateComponents *日期组件;NSCalendar *公历;NSDate *日期; gregorian = [[NSCal
如何将 ddMMyyyy 格式的字符串转换为 DateTime? 最佳答案 尝试使用 DateTime.ParseExact : DateTime.ParseExact(yourDateString,
我一整天都在处理一个 rails 表单,我只是随机测试它并尝试了 25/12/2009 的日期,但它出现了一个巨大的错误。 正是在这一点上,我意识到 rails 设置为美国日期模式 (mm/dd/yy
我在使用 Javascript 解析用户输入时遇到问题,无法让解析器正确接受 ddMMyyyy 中的日期。当有分隔符时,它会正确解析。 下面的例子使用了DateJS (NZ 本地化),我已经初步尝试使
为什么会这样: date +%d%m%Y -d "01052018 + 1 day" 错误/ date: invalid date `02062018 + 1 day' 在 CEST 中的 CentO
我的 mongo 数据库中有一些类型为日期的字段。 使用 Node 和 Express,我可以使用“时刻”以我想要的任何格式提取和显示日期。 当我使用“findByIdAndUpdate”将它们保存回
我有以下字符串输入:24052017。当我尝试这样做时: >>>dateutil.parser.parse("24052017") 它告诉我月份必须在 1..12 中。 我什至尝试过: >>>date
我想将 Datetime 参数更改为 DDMMYYYY 格式。其默认值为 MMddYYYY。当用户从日期选择器中选择日期时,日期应以 ddmmyyyy 格式显示。 我尝试了所有的表达方式 =Forma
我需要日期为 ddmmyyyy 且不带任何间隔符。 我该怎么做? 我可以使用 CONVERT(VARCHAR, [MyDateTime], 112) 获取 yyyymmdd 但我需要相反的情况。 SQ
我需要在 T-SQL 中将 nvarchar 值转换为 datetime。该值采用 ddmmyyyy 格式,例如23072009 我需要在 T-SQL 中转换为日期时间。 我试过了 select co
我是一名优秀的程序员,十分优秀!