Java 以特定格式将UTC日期字符串转换为本地日期字符串

Java 以特定格式将UTC日期字符串转换为本地日期字符串,java,datetime,jodatime,Java,Datetime,Jodatime,我有一个UTC日期字符串 String utcDate = "2014-03-05 07:09:07.0"; 我想将其转换为格式为DD-MMM-YYYY hh:mm a 例如:2014年3月5日下午12:39自UTC日期2014-03-05 07:09:07.0 如何使用简单的java或joda API实现这一点,使用默认功能很容易实现。我希望本地数据仅用于显示 SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-dd HH:mm:s

我有一个UTC日期字符串

String utcDate = "2014-03-05 07:09:07.0";
我想将其转换为格式为
DD-MMM-YYYY hh:mm a
例如:
2014年3月5日下午12:39
自UTC日期
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));

使用默认功能很容易实现。我希望本地数据仅用于显示

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或任何其他时区。您需要注意希望与SimpleDataFormat一起使用的时区

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));
    }
}

下面的代码将帮助您将UTC转换为IST或任何其他时区。您需要注意希望与SimpleDataFormat一起使用的时区

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类非常麻烦。避开它们。相反,请使用library或与捆绑的new in

如果使用字符串格式,则可以将字符串直接传递给Joda时间构造函数。输入字符串接近,但中间的空间应该是<代码> 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 );

众所周知,java.util.Date和.Calendar类非常麻烦。避开它们。相反,请使用library或与捆绑的new in

如果使用字符串格式,则可以将字符串直接传递给Joda时间构造函数。输入字符串接近,但中间的空间应该是<代码> 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 );