我有以下方法
其中参数stringValue in中的内容可以接收字符串数据类型中的日期为
06/20/13
或者我可以收到日期
16/02/2018
所以我应该能够解析它并将其发送到日期类型 现在从下面的代码我能够实现它,但问题是我的年份部分被扣除所以在调试后我发现它来了
[Date: year: 13 month : 7 day:5 ] for date type 06/20/13
现在我想要一年到来
[Date: year: 2013 month : 7 day:5 ]
这是正确的16/02/2018这个,请告知我应该如何更正以上格式,以便它适用于这两个日期。
public static Date convertStringToDate(String stringValue) {
Date iceDate = null;
java.util.Date javaDate = new java.util.Date();
String[] formatStrings = { "dd/MM/yyyy", "dd-MMM-yyyy" };
// DateFormat format = new SimpleDateFormat("dd/MM/yyyy",
// Locale.ENGLISH);
for (String formatString : formatStrings) {
try {
javaDate = new SimpleDateFormat(formatString)
.parse(stringValue);
iceDate = new Date(javaDate);
return iceDate;
} catch (ParseException e) {
logger.warn("##$$$$$### Error in invoice inside convertStringToDate method : ##$$$$$$#### "
+ ErrorUtility.getStackTraceForException(e));
}
}
return null;
}
日期格式为DD / MM / Yy,我使用的是Java 5.请告知
答案 0 :(得分:0)
一旦收到字符串,就不需要使用日期。
您只需要假设一条规则,如果您收到一个2位数的年份,您需要使用一系列年份并选择输入的正确世纪。
实施例: 20/11/78然后是20/11/1978 20/11/05然后是20/11/2005 一旦你假设在这种情况下工作,你可以用这个条件补充2位数年份:
if(Integer.valueOf(year)>70) {
year="19"+year;
}else {
year="20"+year;
}
查看下面的代码:
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class Data {
// four digit input
StringBuffer buffer = new StringBuffer();
try {
String dateFour = "16/02/18";
String tokens[] = dateFour.split("/"); // dd=0 MM=1 yyyy=2 or yy=2
String year = tokens[2];
if (year.length() < 3) {
if (Integer.valueOf(year) > 70) {
year = "19" + year;
System.out.println(year);
} else {
year = "20" + year;
System.out.println(year);
}
}
buffer.append("[Date: year: " + year + " month : " + Integer.valueOf(tokens[1]) + " day:" + Integer.valueOf(tokens[0]) + " ] for date type " + date);
} catch (Exception e) {
System.out.println("ops");
}
System.out.println(buffer.toString());
}
}
您将从sysout获得此响应:
[日期:年份:18个月:2天:16]日期类型16/02/18
答案 1 :(得分:-1)
new SimpleDateFormat("dd/MM/yy")
会做到这一点,它将适用于2位和4位数年
例如
private static final SimpleDateFormat sdf1 = new SimpleDateFormat("dd/MM/yy");
public static void main(String[] args) throws ParseException {
String date = "16/02/2018";
Date d = null;
try {
d = sdf1.parse(date);
}catch(Exception e) {
System.out.println("ops");
}
System.out.println(d);
}
将生成
Fri Feb 16 00:00:00 BRST 2018