我在字符串
中有一个UTC日期String utcDate = "2014-03-05 07:09:07.0";
我想将其转换为格式DD-MMM-YYYY hh:mm a
的本地日期字符串
例如:5-Mar-2014 12:39 PM
来自UTC日期2014-03-05 07:09:07.0
如何使用简单的java或joda API实现这一目标
答案 0 :(得分:2)
使用默认功能非常容易实现。我希望本地数据仅供显示。
SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
parser.setTimeZone(TimeZone.getTimeZone("UTC"));
Date parsed = parser.parse(utcDate);
SimpleDateFormat formatter = new SimpleDateFormat("d-MMM-yyyy hh:mm a");
System.out.println(formatter.format(parsed));
答案 1 :(得分:2)
java.util.Date和.Calendar类非常麻烦。避免他们。而是使用Joda-Time库或与java.time package捆绑在一起的新Java 8。
如果使用ISO 8601格式的字符串,则可以将字符串直接传递给Joda-Time DateTime构造函数。您的输入字符串很接近,但中间的空格应为T
。
使用Joda-Time 2.3库的一些示例代码。
String input = "2014-03-05 07:09:07.0";
String inputModified = input.replace( " ", "T" );
DateTimeZone timeZone = DateTimeZone.forID( "Europe/Paris" );
DateTime dateTimeUtc = new DateTime( inputModified, DateTimeZone.UTC );
DateTime dateTimeParis = dateTimeUTC.toZone( timeZone );
String outputFrance = DateTimeFormat.forPattern( "FF" ).withLocale(Locale.FRANCE).print( dateTimeParis );
DateTimeFormatter formatter = DateTimeFormat.forPattern( "d-MMM-yyyy hh:mm a" ).withLocale( Locale.US );
String outputParisCustom = formatter.print( dateTimeParis );
答案 2 :(得分:1)
以下代码可帮助您将UTC转换为IST或任何其他时区。您需要注意要与SimpleDateFormat一起使用的时区。
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class ConvertTimeZone {
public static void main(String args[]) throws ParseException {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = sdf.parse("2014-03-05 07:09:07");
System.out.println("time in UTC " +sdf.format(date));
sdf.setTimeZone(TimeZone.getTimeZone("IST"));
System.out.println("Time in IST is " + sdf.format(date));
}
}