繁体   English   中英

将字符串转换为格式化日期

[英]Converting string to a formatted date

我正在尝试使用Java的SimpleDateFormat将字符串转换为正确的日期格式。 由于某些原因,它不适用于“ Mar”,“ May”,“ Oct”和“ Dec”等某些月份。 有人可以帮我吗? 其他所有月份都可以正常工作。

import java.sql.Date;
import java.text.SimpleDateFormat;

import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;

public class test {
    public static void main(String args[]) throws java.text.ParseException {
        try {
            SimpleDateFormat parse = new SimpleDateFormat("dd. MMM yyyy hh:mm:ss");
            SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

            //why this doesn't work with certain months like Mar, May, Oct, and Dec? otherwise it works fine

            String dateTime =   "01. Jun 2010 15:30:32";
            //String dateTime = "07. Mar 2011 15:20:10";
            //String dateTime = "07. May 2011 15:20:10";
            //String dateTime = "07. Oct 2011 15:20:10";
            //String dateTime = "07. Dec 2011 15:20:10";


            java.util.Date parsed =parse.parse(dateTime);
            System.out.println("formatted: " + formatter.format(parsed));
        } catch(ParseException e) {
            System.out.println("Caught " + e);
        } 
    }
}    

您需要在SimpleDateFormat上设置语言环境,否则平台默认语言环境将用于月份名称。 您可以通过将其作为第二个参数传递SimpleDateFormat构造函数来实现 如果要使用英语格式的月份名称,请传递Locale.ENGLISH

new SimpleDateFormat("dd. MMM yyyy hh:mm:ss", Locale.ENGLISH);

顺便说一句,您可以通过以下方式了解您的平台默认语言环境

System.out.println(Locale.getDefault());

可在OS级别(例如,在Windows控制面板中)和JVM参数中进行配置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM