我在字符串中的UTC日期轉換UTC日期字符串到本地日期字符串inspecific格式
String utcDate = "2014-03-05 07:09:07.0";
我想將其轉換爲格式DD-MMM-YYYY hh:mm a
例如本地日期字符串:從UTC日期5-Mar-2014 12:39 PM
2014-03-05 07:09:07.0
如何使用簡單的java或joda API實現這一點
我在字符串中的UTC日期轉換UTC日期字符串到本地日期字符串inspecific格式
String utcDate = "2014-03-05 07:09:07.0";
我想將其轉換爲格式DD-MMM-YYYY hh:mm a
例如本地日期字符串:從UTC日期5-Mar-2014 12:39 PM
2014-03-05 07:09:07.0
如何使用簡單的java或joda API實現這一點
使用默認功能很容易實現。我希望本地數據僅用於顯示。
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));
下面的代碼將幫助您將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));
}
}
java.util.Date和.Calendar類出了名的麻煩。避免它們。請使用Joda-Time庫或與Java 8捆綁在一起的新java.time package。
如果使用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);
有用的答案! –