如何将给定的字符串转换为仅使用给定格式的java日期?
我有一个java字符串。我想把它转换成日期。我使用了SimpleDataFormat。但问题是,如果我传递dd-mm-yy而不是dd-mm-yyy,那么它也会解析字符串并转换为日期。下面是代码如何将给定的字符串转换为仅使用给定格式的java日期?,java,date,datetime,Java,Date,Datetime,我有一个java字符串。我想把它转换成日期。我使用了SimpleDataFormat。但问题是,如果我传递dd-mm-yy而不是dd-mm-yyy,那么它也会解析字符串并转换为日期。下面是代码 private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss"); public static void main(String args[]){ Date d =
private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
public static void main(String args[]){
Date d = null;
String dat="14-01-16 21:59:59";
try {
d = dateFormat.parse(dat);
}
catch (ParseException e){
e.printStackTrace();
}
System.out.println(d.toString());
}
理想情况下,它会显示抛出异常,因为在dateFormatter中,我给出的格式是dd-MM-yyy,但在字符串中,我传递了dd-MM-YY格式。那么有没有办法只允许那些只有dd-MM-YYYY格式的字符串,而不允许那些只有dd-MM-YY格式的字符串呢
private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
public static void main(String args[])
{
Date d = null;
String dat="14-01-16 21:59:59";
try
{
if(!dat.matches("\\d\\d-\\d\\d-\\d\\d\\d\\d.*"))
throw new ParseException(dat, 7);
d = dateFormat.parse(dat);
}
catch (ParseException e)
{
e.printStackTrace();
}
}
如果您不想接受YY,只接受YYYY,请使用正则表达式:
private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
public static void main(String args[])
{
Date d = null;
String dat="14-01-16 21:59:59";
try
{
if(!dat.matches("\\d\\d-\\d\\d-\\d\\d\\d\\d.*"))
throw new ParseException(dat, 7);
d = dateFormat.parse(dat);
}
catch (ParseException e)
{
e.printStackTrace();
}
}
如果您不想接受YY,只接受YYYY,请使用正则表达式:
private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
public static void main(String args[])
{
Date d = null;
String dat="14-01-16 21:59:59";
try
{
if(!dat.matches("\\d\\d-\\d\\d-\\d\\d\\d\\d.*"))
throw new ParseException(dat, 7);
d = dateFormat.parse(dat);
}
catch (ParseException e)
{
e.printStackTrace();
}
}
如果您不想接受YY,只接受YYYY,请使用正则表达式:
private static SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-YYYY HH:mm:ss");
public static void main(String args[])
{
Date d = null;
String dat="14-01-16 21:59:59";
try
{
if(!dat.matches("\\d\\d-\\d\\d-\\d\\d\\d\\d.*"))
throw new ParseException(dat, 7);
d = dateFormat.parse(dat);
}
catch (ParseException e)
{
e.printStackTrace();
}
}
RIF(阅读是基础)。阅读SimpleDataFormatAPI页面。请注意:“对于解析,如果模式字母的数量超过2,则不管数字的数量如何,年份都按字面解释。因此,使用模式“MM/dd/yyyy”,“01/11/12”解析为公元12年1月11日。”除非你处理的是非常早的日期,否则你可能会在阅读后拒绝1-1-1000之前的任何内容。我建议改变亨利的建议:拒绝1-1-1900(或某个合理的开始日期)之前的所有内容。RIF(阅读是基本的)。阅读SimpleDataFormatAPI页面。请注意:“对于解析,如果模式字母的数量超过2,则不管数字的数量如何,年份都按字面解释。因此,使用模式“MM/dd/yyyy”,“01/11/12”解析为公元12年1月11日。”除非你处理的是非常早的日期,否则你可能会在阅读后拒绝1-1-1000之前的任何内容。我建议改变亨利的建议:拒绝1-1-1900(或某个合理的开始日期)之前的所有内容。RIF(阅读是基本的)。阅读SimpleDataFormatAPI页面。请注意:“对于解析,如果模式字母的数量超过2,则不管数字的数量如何,年份都按字面解释。因此,使用模式“MM/dd/yyyy”,“01/11/12”解析为公元12年1月11日。”除非你处理的是非常早的日期,否则你可能会在阅读后拒绝1-1-1000之前的任何内容。我建议改变亨利的建议:拒绝1-1-1900(或某个合理的开始日期)之前的所有内容。RIF(阅读是基本的)。阅读SimpleDataFormatAPI页面。请注意:“对于解析,如果模式字母的数量超过2,则不管数字的数量如何,年份都按字面解释。因此,使用模式“MM/dd/yyyy”,“01/11/12”解析为公元12年1月11日。”除非你处理的是非常早的日期,否则你可能会在阅读后拒绝1-1-1000之前的任何内容。我建议改变亨利的建议:拒绝1-1-1900(或某个合理的开始日期)之前的所有内容。