如何根据系统的区域日期时间格式设置将字符串日期转换为Date对象?

时间:2015-01-20 11:15:44

标签: java date datetime formatting

在我的项目中,我正在使用Date类的对象, 例如

Date date = Date(dateInStringForm);[Though it is deprecated]

它与IST[Indian Standard Time]完美配合,但是当我更改Region&中的设置时控制面板[Operating system : Windows7]中的语言与任何其他国家/地区相关,例如葡萄牙,然后投掷java.lang.IllegalArgumentException。我们如何才能使这种转换成为通用的?

以下是我的试用示例代码,

import java.util.Date;

public class GenericDateTime {

/**
 * @param args
 */
public static void main(String[] args) {
    // TODO Auto-generated method stub
   //  Date date = new Date("Jan 20, 2015 3:19:52 PM"); //Indian Standard Time Format
    Date date = new Date("20/Jan/2015 15:19:51"); //Portugese Time Format
    System.out.println("Date Object Form--->>>" + date);
}

}

2 个答案:

答案 0 :(得分:2)

它与时区无关。您提供的格式与Date()允许的格式不同,并且可以解析。在转换之前没有不知道格式的情况下,没有通用的方法可以接受任何类型的日期格式。

因此,要接受任何特定格式,您可以使用SimpleDateFormat

     public static void main(String[] args) {

        SimpleDateFormat dateFormat= new SimpleDateFormat("dd/MMM/yyyy HH:mm:ss");
        dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
        try {
            Date date = dateFormat.parse("20/Jan/2015 15:19:51");
            System.out.println(date);
        } catch (ParseException e) {

            e.printStackTrace();
        }


  }

答案 1 :(得分:0)

您可以使用SimpleTimeFormat指定日期格式,并将日期字符串作为UTC时间传递,而不是将日期作为String传递。如果您可以自由使用外部库Joda Time,那么最适合您。