- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我希望针对以下代码和输入抛出异常:
SimpleDateFormat getDateTimeFormat(String requiredFormat)
{
SimpleDateFormat dateTimeFormat = new SimpleDateFormat(requiredFormat);
//this will make sure that if parsing fails exception is thrown
dateTimeFormat.setLenient(false);
return dateTimeFormat;
}
Date date = getDateTimeFormat("MM/dd/yyyy HH:mm").parse(estimatedDeliveryDttm);
输入:10/25/16 17:46
我期待解析异常,因为年份不是“yyyy”,但我得到的年份是“0016”,这是我不想要的。我不能使用 JAVA 8。我已经尝试过 JAVA 7(包括解析位置方法)和 JODA Date Time API。
最佳答案
来自 SimpleDateFormat 的 Javadocs
Year: If the formatter's Calendar is the Gregorian calendar, thefollowing rules are applied.
For formatting, if the number of patternletters is 2, the year is truncated to 2 digits; otherwise it isinterpreted as a number.
For parsing, if the number of pattern lettersis more than 2, the year is interpreted literally, regardless of thenumber of digits. So using the pattern "MM/dd/yyyy", "01/11/12" parsesto Jan 11, 12 A.D.
For parsing with the abbreviated year pattern ("y"or "yy"),SimpleDateFormat must interpret the abbreviated yearrelative to some century. It does this by adjusting dates to be within80 years before and 20 years after the time the SimpleDateFormatinstance is created. For example, using a pattern of "MM/dd/yy" and aSimpleDateFormat instance created on Jan 1, 1997, the string"01/11/12" would be interpreted as Jan 11, 2012 while the string"05/04/64" would be interpreted as May 4, 1964. During parsing, onlystrings consisting of exactly two digits, as defined byCharacter.isDigit(char), will be parsed into the default century. Anyother numeric string, such as a one digit string, a three or moredigit string, or a two digit string that isn't all digits (forexample, "-1"), is interpreted literally. So "01/02/3" or "01/02/003"are parsed, using the same pattern, as Jan 2, 3 AD. Likewise, "01/02/-3" is parsed as Jan 2, 4 BC.
请参阅上面的粗体点,它解释了您所看到的行为。
关于JAVA和JODA Date解析即使格式错误也不会抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40014768/
数据框有一个字符串类型的日期列 '2017-01-01' 它被转换为 DateType() df = df.withColumn('date', col('date_string').cast(Dat
这个问题在这里已经有了答案: What is "x && foo()"? (5 个答案) 关闭 8 年前。 我在 bootstrap-datepicker.js 文件中遇到过这个。 作者在_setD
我有一个数据库 utc 字符串,我正在传递到 Date(attrs.endDate),然后通过 new Date() 减去当前的 utc 日期,但我无法得到它来为我提供 2 个 utc 日期的正确差异
这个问题在这里已经有了答案: how to determine if 2 dates object equals each other? [duplicate] (3 个答案) 关闭 6 年前。 我
这个问题已经有答案了: How can I convert "/Date(1399739515000)/" into date format in JavaScript? (3 个回答) 已关闭 8
根据MDN ,我们只能将以下类型的参数传递给 Date 构造函数: new Date(); new Date(value); // Unix timestamp new Date(dateString
我从表中获取所有项目: endDate >= 现在 endDate 为 NULL published 等于 1。 这是我所拥有的,但它给了我 0 个项目: $items = Items::orderB
此查询需要很长时间才能完成。当我将 WHERE 子句设置为 new_dl >= '2014-01-01' 时,查询大约需要 6 分钟才能浏览大约 3 个月的数据。现在不知道为什么这个应该从 12 个月
我有一个正在为项目开发的小型 Java 程序,它使用 JavaMail 从指定的 URI 中提取用户的收件箱,然后开始处理消息。 在 Outlook 中,属性菜单中有一个功能可以设置邮件的到期日期,它
我想在获取 Date.getHours()、Date.getMinutes() 和 Date.getSeconds() 的值后格式化输出>. 这是一条漫长的路: var dt = new Date()
我发现java.text.DateFormat有两种格式化日期的方法。一种是采用 Date 参数,另一种是采用 Object 参数。我检查了DateFormat源代码,似乎他们调用了不同的内部方法。
我有两个对象,p4 和 p5,它们都具有 Date 属性。在某些时候,构造函数工作正常: p4.setClickDate(new Date(System.currentTimeMillis() - 8
我是使用 Sequelize 和 Node.js 的新手,但我的代码中存在日期比较问题。 User.findOne({ where: { resetToken: passwordToken,
我正在使用一个名为 fullcalendar 的 jquery 日历。当用户单击某一天时,他们将被发送到另一个页面以创建该天的事件。单击的日期作为 date 提供。然后通过下面的函数运行将其转换为 U
我有一个列表列表,每个列表中都有整数值,代表 8 年期间的日期。 dates = [[2014, 11, 14], [2014, 11, 13], ....., [2013, 12, 01]
我有两个表: 首先是TimeValues(示例) time | value 12/28/18 | 5.6 01/03/19 | 5.6 01/04/19 | 5.6 01/09/19 | 5.
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
像这样实例化的日期对象: new Date("2011-12-13") 返回一个认为自己是星期一的日期对象: Date {Mon Dec 12 2011 16:00:00 GMT-0800 (PST)
我需要选择入住日期和退房日期在指定日期范围之间的房价。这些费率根据其条件单独命名。房费取决于所选日期。这是我的代码: rate_eb rate_name rate_starts rat
我有 [Int64:[String:String]] 其中 Int64 是时间戳。如何检测和删除 [String:String] 中的参数之一是 ["name"] = "test" 并重复多次的同一天
我是一名优秀的程序员,十分优秀!