在java中将EST时间转换为本地时间
我无法将(2012年12月19日美国东部时间上午8:57)转换为当地时间(现在是印度时间)。 转换时,我的时间错了(2012年12月19日11:27)。我正在使用以下代码:在java中将EST时间转换为本地时间,java,datetime,timezone,simpledateformat,Java,Datetime,Timezone,Simpledateformat,我无法将(2012年12月19日美国东部时间上午8:57)转换为当地时间(现在是印度时间)。 转换时,我的时间错了(2012年12月19日11:27)。我正在使用以下代码: private void convertEdtToLocalTime(String pubDate) { //pubDate = 12/19/2012 8:57am EST; String localPubDate; try { SimpleDateFormat sdf = n
private void convertEdtToLocalTime(String pubDate)
{
//pubDate = 12/19/2012 8:57am EST;
String localPubDate;
try
{
SimpleDateFormat sdf = new SimpleDateFormat(
"MM/dd/yyyy HH:mma z");
TimeZone timeZone = TimeZone.getDefault();
sdf.setTimeZone(timeZone);
if (pubDate != null)
{
Date date = sdf.parse(pubDate);
sdf = new SimpleDateFormat("MMM dd yyyy HH:mm");
localPubDate = sdf.format(date);
}
}
catch (ParseException e)
{
}
}
您不需要设置时区,因为时区已在pubDate字符串中指定。当您想要使用不同的SDF进行格式化时,默认时区会将其转换为默认时区本身。例如,如果你在印度,IST时间=2012年12月19日19:27
private static void convertEdtToLocalTime(String pubDate)
{
//pubDate = 12/19/2012 8:57am EST;
String localPubDate=null;
try
{
SimpleDateFormat sdf = new SimpleDateFormat(
"MM/dd/yyyy HH:mma z");
// TimeZone timeZone = TimeZone.getDefault(); // No need to do it
// sdf.setTimeZone(timeZone);
if (pubDate != null)
{
Date date = sdf.parse(pubDate);
sdf = new SimpleDateFormat("MMM dd yyyy HH:mm");
localPubDate = sdf.format(date);
}
}
catch (ParseException e)
{
}
System.out.println(localPubDate);
}
正确的时间是什么?2012年12月19日19:30(印度时间)。@GvSrinivas:你确定你的系统默认时区真的是印度时间吗?实际上我必须获取用户时区并将东部时间转换为用户本地时间。这段代码将在何处执行??用户机器??然后它会给用户本地时间时区。是的。它会在用户机器上执行(全球任何地方)。是否不需要获取用户的时区?sdf.格式(日期);如果未指定其他时区,将在用户本地时区中格式化