java字符串到日期的转换,无需秒

java字符串到日期的转换,无需秒,java,date-conversion,Java,Date Conversion,我必须将字符串转换为日期,这样当字符串有秒数时就会抛出错误。例如,如果我以“2015-08-12 12:24:08”的形式给出输入字符串,我应该会得到一个错误,因为我在字符串中给出秒数(即,这里是08),而如果我以“2015-08-12:24”的形式给出输入,我应该不会得到任何错误。我怎样才能做到这一点 我试过下面的代码 String oldstring2 = "2015-08-12 12:24:08"; Date date2 = null; try { date2

我必须将字符串转换为日期,这样当字符串有秒数时就会抛出错误。例如,如果我以“2015-08-12 12:24:08”的形式给出输入字符串,我应该会得到一个错误,因为我在字符串中给出秒数(即,这里是08),而如果我以“2015-08-12:24”的形式给出输入,我应该不会得到任何错误。我怎样才能做到这一点

我试过下面的代码

     String oldstring2 = "2015-08-12 12:24:08";
     Date date2 = null;
try {
    date2 = new SimpleDateFormat("yyyy-MM-dd HH:mm").parse(oldstring2);
    System.out.println(date2);
    System.out.println("success");
} catch (ParseException e) {
    e.printStackTrace();
    System.out.println("error");
}
请试试这个:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateConversion {

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
    Date d = sdf.parse("2015-08-12 12:24:08");
    System.out.println(d);

}

}
请试试这个:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateConversion {

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
    Date d = sdf.parse("2015-08-12 12:24:08");
    System.out.println(d);

}

}
请试试这个:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateConversion {

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
    Date d = sdf.parse("2015-08-12 12:24:08");
    System.out.println(d);

}

}
请试试这个:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateConversion {

public static void main(String[] args) throws ParseException {
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:MM:SS");
    Date d = sdf.parse("2015-08-12 12:24:08");
    System.out.println(d);

}

}
如果您的输入日期与每次指定的日期完全相同,则上面的代码可以工作

如果您的输入日期与每次指定的日期完全相同,则上面的代码可以工作

如果您的输入日期与每次指定的日期完全相同,则上面的代码可以工作


如果您的输入日期与每次指定的日期完全相同,则上面的代码可以工作。

对于Java 8,您可以使用DateTimeFormatter类。因为这会执行严格的解析,而不是像SimpleDataFormat那样从一开始就尝试匹配:

    String string = "2015-08-12 12:24";
    TemporalAccessor ta = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").parse(string);
    LocalDate date = LocalDate.from(ta);
当您将字符串更改为包含秒时,解析方法将引发异常:

java.time.format.DateTimeParseException: Text '2015-08-12 12:24:12' could not be parsed, unparsed text found at index 16

使用Java8,您可以使用DateTimeFormatter类。因为这会执行严格的解析,而不是像SimpleDataFormat那样从一开始就尝试匹配:

    String string = "2015-08-12 12:24";
    TemporalAccessor ta = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").parse(string);
    LocalDate date = LocalDate.from(ta);
当您将字符串更改为包含秒时,解析方法将引发异常:

java.time.format.DateTimeParseException: Text '2015-08-12 12:24:12' could not be parsed, unparsed text found at index 16

使用Java8,您可以使用DateTimeFormatter类。因为这会执行严格的解析,而不是像SimpleDataFormat那样从一开始就尝试匹配:

    String string = "2015-08-12 12:24";
    TemporalAccessor ta = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").parse(string);
    LocalDate date = LocalDate.from(ta);
当您将字符串更改为包含秒时,解析方法将引发异常:

java.time.format.DateTimeParseException: Text '2015-08-12 12:24:12' could not be parsed, unparsed text found at index 16

使用Java8,您可以使用DateTimeFormatter类。因为这会执行严格的解析,而不是像SimpleDataFormat那样从一开始就尝试匹配:

    String string = "2015-08-12 12:24";
    TemporalAccessor ta = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").parse(string);
    LocalDate date = LocalDate.from(ta);
当您将字符串更改为包含秒时,解析方法将引发异常:

java.time.format.DateTimeParseException: Text '2015-08-12 12:24:12' could not be parsed, unparsed text found at index 16

正则表达式可以实现以下目标:

String oldstring2 = "2015-08-12 12:24";
Pattern p = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?"
        + "((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))"
        + "|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|"
        + "(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|"
        + "([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?"
        + "((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|"
        + "([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"
        + "(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])()))?$");
if (p.matcher(oldstring2).matches()) {
    // do something
} else {
    // return the error
}

正则表达式可以实现以下目标:

String oldstring2 = "2015-08-12 12:24";
Pattern p = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?"
        + "((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))"
        + "|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|"
        + "(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|"
        + "([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?"
        + "((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|"
        + "([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"
        + "(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])()))?$");
if (p.matcher(oldstring2).matches()) {
    // do something
} else {
    // return the error
}

正则表达式可以实现以下目标:

String oldstring2 = "2015-08-12 12:24";
Pattern p = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?"
        + "((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))"
        + "|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|"
        + "(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|"
        + "([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?"
        + "((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|"
        + "([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"
        + "(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])()))?$");
if (p.matcher(oldstring2).matches()) {
    // do something
} else {
    // return the error
}

正则表达式可以实现以下目标:

String oldstring2 = "2015-08-12 12:24";
Pattern p = Pattern.compile("^((\\d{2}(([02468][048])|([13579][26]))[\\-\\/\\s]?"
        + "((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))"
        + "|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|"
        + "(0?2[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|"
        + "([13579][01345789]))[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?"
        + "((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|"
        + "([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))"
        + "(\\s(((0?[0-9])|([1-2][0-3]))\\:([0-5]?[0-9])()))?$");
if (p.matcher(oldstring2).matches()) {
    // do something
} else {
    // return the error
}



到目前为止,您已经厌倦了什么?如果您只需要检查日期是否有效,您可以根据字符串长度进行检查;日期2=空;尝试{date2=newsimpledateformat(“yyyy-MM-dd HH:MM”).parse(oldstring2);System.out.println(date2);System.out.println(“成功”);}catch(ParseException e){e.printStackTrace();System.out.println(“错误”);}从现在开始,如果您只想检查字符串是否有秒数,请在问题中添加您的代码…检查冒号(:)计数。如果有两个冒号,则日期字符串有秒。稍后,您可以转换为日期。到目前为止,您已经厌倦了什么?如果您只需要检查日期是否有效,您可以根据字符串长度来执行此操作。我尝试了类似于
string oldstring2=“2015-08-12 12:24”;日期2=空;尝试{date2=newsimpledateformat(“yyyy-MM-dd HH:MM”).parse(oldstring2);System.out.println(date2);System.out.println(“成功”);}catch(ParseException e){e.printStackTrace();System.out.println(“错误”);}
从现在开始,如果您只想检查字符串是否有秒数,请在问题中添加您的代码…检查冒号(:)计数。如果有两个冒号,则日期字符串有秒。稍后,您可以转换为日期。到目前为止,您已经厌倦了什么?如果您只需要检查日期是否有效,您可以根据字符串长度来执行此操作。我尝试了类似于
string oldstring2=“2015-08-12 12:24”;日期2=空;尝试{date2=newsimpledateformat(“yyyy-MM-dd HH:MM”).parse(oldstring2);System.out.println(date2);System.out.println(“成功”);}catch(ParseException e){e.printStackTrace();System.out.println(“错误”);}
从现在开始,如果您只想检查字符串是否有秒数,请在问题中添加您的代码…检查冒号(:)计数。如果有两个冒号,则日期字符串有秒。稍后,您可以转换为日期。到目前为止,您已经厌倦了什么?如果您只需要检查日期是否有效,您可以根据字符串长度来执行此操作。我尝试了类似于
string oldstring2=“2015-08-12 12:24”;日期2=空;尝试{date2=newsimpledateformat(“yyyy-MM-dd HH:MM”).parse(oldstring2);System.out.println(date2);System.out.println(“成功”);}catch(ParseException e){e.printStackTrace();System.out.println(“错误”);}
从现在开始,如果您只想检查字符串是否有秒数,请在问题中添加您的代码…检查冒号(:)计数。如果有两个冒号,则日期字符串有秒。稍后您可以转换为日期。我没有得到任何异常。@NagaRama Krishna在sdf变量中使用SS,以使其更具体,这样如果有人不提供秒数,它将抛出错误。@NagaRama Krishna成功了,我已修改了我的答案,请尝试并确认..我不希望秒数被接受我选择使用字符串长度来简化我没有得到任何异常。@NagaRama Krishna在sdf变量中使用SS更具体,这样如果有人不提供秒数,它将抛出错误。@NagaRama Krishna成功了吗?我已编辑了我的答案,请尝试并确认..我不希望秒数被接受我选择使用字符串长度来简化我没有得到任何异常。@NagaRama Krishna在sdf变量中使用SS更具体,这样如果有人不提供秒数,它将抛出错误。@NagaRama Krishna成功了吗?我已编辑了我的答案,请试着确认一下,我不想让秒被接受,我选择使用字符串长度是为了简单,我没有得到任何前男友