[英]Regarding format date/time in java
我有两种日期时间格式,
'dd-mm-yyyy'
和 'dd-mm-yyyy hh:MM:ss'
在我的应用程序中。 输入值可以是以上任何形式的字符串。
我想将此日期值存储在数据库中。 因此,首先我使用SimpleDateFormatter
对其进行格式化。 但是,如何检查输入字符串是1型还是2型?
如果输入日期时间类型为(2)的形式,并且我使用格式化程序'dd-mm-yyyy'
格式化datetime,则返回null
。
任何输入类型-必须根据输入进行转换。 简而言之,如何检查输入的日期时间格式?
我想将此日期值存储在数据库中。 因此,首先我使用SimpleDateFormatter对其进行格式化,但是如何检查输入字符串是1还是2。
听起来好像您想解析该值-您不应该将它作为字符串存储在数据库中。 (解析是从字符串转换为自然数据类型,例如Date
。格式化是从值转换为字符串。)
您可以尝试使用DateFormat.parse
解析值,并在文本无效的情况下捕获抛出的异常-但您应注意格式字符串错误。 “ M”代表年份,“ m”代表分钟,而不是相反。 您可能还想要24小时制(H),而不是12小时制(h),因此您需要:
dd-MM-yyyy
dd-MM-yyyy HH:mm:ss
最后,我强烈建议您使用Joda Time而不是内置的日期/时间类。 约达时间是一个更好的 API。 (例如,与JRE中的格式化程序不同,Joda Time中的格式化程序是线程安全的。)
首先,您的数据格式搞砸了–错误的分钟数( mm
)和月份( MM
)。 即您的格式应为:
"dd-MM-yyyy"
"dd-MM-yyyy HH:mm:ss"
接下来,您不必太过精打细算,只需尝试每种格式并查看有效的方法:
public static Date parseDate(String input) {
String[] formats = { "dd-MM-yyyy", "dd-MM-yyyy HH:mm:ss" }; // Add more as you like
for (String format : formats) {
try {
return new SimpleDateFormat(format).parse(input);
}
catch (ParseException e) {
// Ignore and continue
}
}
throw new IllegalArgumentException("Could not parse date from " + input);
}
区分这两种格式有很多可能性。 一种简单的方法是检查输入字符串的长度。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.