我如何解析;年月日;到Java中的ISO日期?

我如何解析;年月日;到Java中的ISO日期?,java,parsing,date,datetime,Java,Parsing,Date,Datetime,嘿,伙计们,我把日期“01.01.1000 AD”(SimpleDate)作为字符串和dd.MM.yyyy G(SimpleFormat),需要将其解析为标准ISO日期,格式为1995-12-31T23:59:59Z(yyyy-MM-dd'T'hh:MM:ss'Z') 我的实际代码是: public static String getISODate(String simpleDate, String simpleFormat, String isoFormat) throws ParseExce

嘿,伙计们,我把日期
“01.01.1000 AD”
(SimpleDate)作为字符串和
dd.MM.yyyy G
(SimpleFormat),需要将其解析为标准ISO日期,格式为
1995-12-31T23:59:59Z
yyyy-MM-dd'T'hh:MM:ss'Z'

我的实际代码是:

public static String getISODate(String simpleDate, String simpleFormat, String isoFormat) throws ParseException {
    Date date;
    if (simpleFormat.equals("long")) {
        date = new Date(Long.parseLong(simpleDate));
    } else {
        SimpleDateFormat df = new SimpleDateFormat(simpleFormat);
        df.setTimeZone(TimeZone.getTimeZone("UTC"));
        // or else testcase
        // "1964-02-24" would
        // result "1964-02-23"
        date = df.parse(simpleDate);
    }
    return getISODate(date, isoFormat);
}
有人知道我该怎么做吗?

试试这个:

    String string = "01.01.1000 AD";
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy GG");
    Date date = dateFormat.parse(string);
日期格式中的G代表纪元

请参见尝试以下操作:

    String string = "01.01.1000 AD";
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy GG");
    Date date = dateFormat.parse(string);
日期格式中的G代表纪元

请参见尝试以下操作:

    String string = "01.01.1000 AD";
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy GG");
    Date date = dateFormat.parse(string);
日期格式中的G代表纪元

请参见尝试以下操作:

    String string = "01.01.1000 AD";
    SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy GG");
    Date date = dateFormat.parse(string);
日期格式中的G代表纪元

看到这样的东西了吗

String date = "01.01.1000 AD";   
SimpleDateFormat parserSDF = new SimpleDateFormat("dd.mm.yyyy GG");   
System.out.println(parserSDF.parse(date));   
像这样的

String date = "01.01.1000 AD";   
SimpleDateFormat parserSDF = new SimpleDateFormat("dd.mm.yyyy GG");   
System.out.println(parserSDF.parse(date));   
像这样的

String date = "01.01.1000 AD";   
SimpleDateFormat parserSDF = new SimpleDateFormat("dd.mm.yyyy GG");   
System.out.println(parserSDF.parse(date));   
像这样的

String date = "01.01.1000 AD";   
SimpleDateFormat parserSDF = new SimpleDateFormat("dd.mm.yyyy GG");   
System.out.println(parserSDF.parse(date));   
尝试一下可能会有帮助:

public static String getISODate(String simpleDate, String simpleFormat, String isoFormat) throws ParseException {
    Date date;
    if (simpleFormat.equals("long")) {
        date = new Date(Long.parseLong(simpleDate));
    } else {
        SimpleDateFormat df = new SimpleDateFormat(simpleFormat);
        df.setTimeZone(TimeZone.getTimeZone("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
        // or else testcase
        // "1964-02-24" would
        // result "1964-02-23"
        date = df.parse(simpleDate);
    }
    return getISODate(date, isoFormat);
}
尝试一下可能会有帮助:

public static String getISODate(String simpleDate, String simpleFormat, String isoFormat) throws ParseException {
    Date date;
    if (simpleFormat.equals("long")) {
        date = new Date(Long.parseLong(simpleDate));
    } else {
        SimpleDateFormat df = new SimpleDateFormat(simpleFormat);
        df.setTimeZone(TimeZone.getTimeZone("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
        // or else testcase
        // "1964-02-24" would
        // result "1964-02-23"
        date = df.parse(simpleDate);
    }
    return getISODate(date, isoFormat);
}
尝试一下可能会有帮助:

public static String getISODate(String simpleDate, String simpleFormat, String isoFormat) throws ParseException {
    Date date;
    if (simpleFormat.equals("long")) {
        date = new Date(Long.parseLong(simpleDate));
    } else {
        SimpleDateFormat df = new SimpleDateFormat(simpleFormat);
        df.setTimeZone(TimeZone.getTimeZone("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
        // or else testcase
        // "1964-02-24" would
        // result "1964-02-23"
        date = df.parse(simpleDate);
    }
    return getISODate(date, isoFormat);
}
尝试一下可能会有帮助:

public static String getISODate(String simpleDate, String simpleFormat, String isoFormat) throws ParseException {
    Date date;
    if (simpleFormat.equals("long")) {
        date = new Date(Long.parseLong(simpleDate));
    } else {
        SimpleDateFormat df = new SimpleDateFormat(simpleFormat);
        df.setTimeZone(TimeZone.getTimeZone("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
        // or else testcase
        // "1964-02-24" would
        // result "1964-02-23"
        date = df.parse(simpleDate);
    }
    return getISODate(date, isoFormat);
}

这很有希望对标准jdk有所帮助,但至少是可能的——JSR310不支持此功能:-(]:


这很有希望对标准jdk有所帮助,但至少是可能的——JSR310不支持此功能:-(]:


这很有希望对标准jdk有所帮助,但至少是可能的——JSR310不支持此功能:-(]:


这很有希望对标准jdk有所帮助,但至少是可能的——JSR310不支持此功能:-(]:




公元1000年1月1日指的是什么日历?请看一下,尤其是
解析
格式
方法。对于公元1000年的日期,您必须考虑一些有趣的现象,例如1582年从朱利安过渡到格里高利,以及一个地点在过去10年中将有许多不同的时区00年。
String isoFormat
在我的例子中是空的。公元01.01.1000年指的是什么日历?看看,尤其是
parse
format
方法。对于公元1000年的日期,你必须考虑到有趣的现象,例如1582年从朱利安到格里高利的转变,以及一个地点在过去的1000年里,我有很多不同的时区。在我的例子中,
String isoFormat
是空的。01.01.1000 AD指的是什么日历?看看,特别是
parse
format
方法。对于公元1000年的日期,你必须考虑有趣的现象,例如从1582年,朱利安向格雷戈里转来,一个地点在过去1000年中将有许多不同的时区。而
String isoFormat
在我的例子中是空的。公元01.01.1000年指的是什么日历?看看,尤其是
parse
format
方法。对于公元1000年的日期,你必须接受考虑到一些有趣的现象,例如1582年从朱利安过渡到格里高利,以及一个地点在过去1000年中将有许多不同的时区。在我的情况下,
String isoFormat
为空。
MM
必须使用数月。
MM
必须使用数月。
MM
必须是used数月。
MM
必须使用数月。我仍然得到一个exeption
java.text.ParseException:不可解析的日期:“01.01.1000 AD”
如果我这样设置语言环境,我可以重现您的错误:
SimpleDateFormat dateFormat=new SimpleDateFormat(“dd.MM.yyy GG”,locale.dermany);
,所以它看起来像是一个区域设置问题。我仍然得到了一个exeption
java.text.ParseException:unparseabable date:“01.01.1000 AD”
如果我这样设置区域设置,我可以重现您的错误:
SimpleDateFormat dateFormat=new SimpleDateFormat(“dd.MM.yyyy GG”,locale.GERMANY);
,所以它看起来像是一个区域设置问题。我仍然得到了一个exeption
java.text.ParseException:unparseabable date:“01.01.1000 AD”
如果我这样设置区域设置,我可以重现您的错误:
SimpleDateFormat dateFormat=new SimpleDateFormat(“dd.MM.yyyy GG”,locale.GERMANY);
,所以它看起来像是一个区域设置问题。我仍然得到了一个exeption
java.text.ParseException:unparseabable date:“01.01.1000 AD”
如果我这样设置区域设置,我可以重现您的错误:
SimpleDateFormat dateFormat=new SimpleDateFormat(“dd.MM.yyyy GG”,locale.GERMANY);
,因此它看起来像是区域设置问题。yyyy-MM-dd'T'HH:MM:ss.SSSZ不是有效的时区标识符,而是SimpleDataFormat的模式字符串。同样
java.text.ParseException:不可解析的日期:“01.01.1000 AD”
这是因为对于您输入的时区,00:00:00 01-01-1000 AD时刻不存在。如果您选择夏时制开始时跳过的日期/时间瞬间,您每年会在1小时内看到相同的错误。yyyy-MM-dd'T'HH:MM:ss.SSSZ不是有效的时区标识符,而是S的模式字符串impleDateFormat.ALL
java.text.ParseException:不可解析日期:“公元01.01.1000年”
这是因为对于您输入的时区,00:00:00 01-01-1000 AD时刻不存在。如果您选择夏时制开始时跳过的日期/时间瞬间,您每年会在1小时内看到相同的错误。yyyy-MM-dd'T'HH:MM:ss.SSSZ不是有效的时区标识符,而是S的模式字符串impleDateFormat.ALL
java.text.ParseException:不可解析日期:“公元01.01.1000年”
这是因为对于您输入的时区,00:00:00 01-01-1000 AD时刻不存在。如果您选择夏时制开始时跳过的日期/时间瞬间,您每年会在1小时内看到相同的错误。yyyy-MM-dd'T'HH:MM:ss.SSSZ不是有效的时区标识符,而是S的模式字符串impleDateFormat.ALL
java.text.ParseException:不可解析日期:“01.01.1000 AD”
这是因为对于您输入的时区,00:00:00 01-01-1000 AD的时刻不存在