首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在此的nl_NL区域中,日期时间模式将是什么?

在此的nl_NL区域中,日期时间模式将是什么?
EN

Stack Overflow用户
提问于 2011-12-29 16:19:24
回答 2查看 4.2K关注 0票数 0

在我的项目中,我使用了如下日期转换(为了简洁起见,我只使用了相关的块)

代码语言:javascript
复制
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.xml.datatype.DatatypeConfigurationException;
import javax.xml.datatype.DatatypeFactory;
import javax.xml.datatype.XMLGregorianCalendar;


public class FormatTest {

    public static void main(String[] args) {
        try {
            String destinationDateFormat = "MM/dd/yyyy HH:mm:ss";
            String sourceDateFormat = "EEE MMM d HH:mm:ss z yyyy";
            String dateString = "2011-12-20T00:00:00+00:00";

            DatatypeFactory factory = DatatypeFactory.newInstance();

            XMLGregorianCalendar cal = factory.newXMLGregorianCalendar(dateString);
            Calendar gCal = cal.toGregorianCalendar();
            Date convertedDate = gCal.getTime();
            SimpleDateFormat sdf = new SimpleDateFormat(sourceDateFormat);
            if (convertedDate != null) {
                String convertedDateString = new SimpleDateFormat(destinationDateFormat).format(sdf.parse(
                            convertedDate.toString()).getTime());

                System.out.println("Final Date :" + convertedDateString);
            }       

        } catch (DatatypeConfigurationException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            e.printStackTrace();
        }



    }

}

在我的项目中,变量destinationDateFormatsourceDateFormat是从spring属性文件中读取的。上面的代码在unix框中运行良好,其中系统区域设置为en_USen_GB,但是其中一个测试框具有nl_NL区域设置,这正是上面的代码未能给出ParseException的地方。问题是,sourceDateFormat在nl_NL语言环境中是不能解析的。

有人能建议我在nl_NL地区对应的是什么?

我不想更改java代码,因为它代价很高。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-29 17:00:14

看起来可能是这样的:EEEE, MMMM d, yyyy h:mm:ss a z

我写了一个小班来学习:

代码语言:javascript
复制
    DateFormat f = getDateTimeInstance(FULL, FULL, new Locale("nl_NL"));
    SimpleDateFormat sf = (SimpleDateFormat) f;
    String p1 = sf.toPattern();
    String p2 = sf.toLocalizedPattern();

    System.out.println( p1 );
    System.out.println( p2 );

来源于this SO answer

票数 0
EN

Stack Overflow用户

发布于 2011-12-29 17:31:56

en_US的日期格式符号是:

代码语言:javascript
复制
GyMdkHmsSEDFwWahKzZ

nl_NL的日期格式符号是:

代码语言:javascript
复制
GyMdkHmsSEDFwWahKzZ

没有什么不同。我通过执行以下Java行获得日期格式符号:

代码语言:javascript
复制
System.out.println(DateFormatSymbols.getInstance
        (new Locale("en_US")).getLocalPatternChars());
System.out.println(DateFormatSymbols.getInstance
        (new Locale("nl_NL")).getLocalPatternChars());

我将源日期格式保持不变:

代码语言:javascript
复制
String sourceDateFormat = "EEE MMM d HH:mm:ss z yyyy";

并将简单日期格式语句修改为:

代码语言:javascript
复制
SimpleDateFormat sdf = new SimpleDateFormat(sourceDateFormat,
        new Locale("nl_NL"));

通过这个简单的日期格式更改,您的测试代码运行良好,并在美国东部时区产生了以下结果:

代码语言:javascript
复制
Date string: 2011-12-20T00:00:00+00:00
Final Date:  12/19/2011 19:00:00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8670321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档