在我的项目中,我正在使用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);
}
}
答案 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,那么最适合您。