我正在尝试将日期转换为指定的时区并返回转换后的日期。但代码总是返回未转换的日期。可以任何帮助。
public static Date testUserSpecifiedConv(String toTimezone, Date inputDate) {
System.out.println(inputDate);
Date convertedDate = null;
String inputDateStr ;
DateFormat df = new SimpleDateFormat("MM/dd/yyyy HH:mm:ss");
df.setTimeZone(TimeZone.getTimeZone(toTimezone));
inputDateStr = df.format(inputDate);
System.out.println("Formatted Date In String Format: " + inputDateStr);
//Now trying to convert it back to date
try {
convertedDate = df.parse(inputDateStr);
} catch (ParseException e) {
e.printStackTrace();
}
return convertedDate;
}
public static void main(String args[]) {
System.out.println("Formatted Date In Date Format: "+testUserSpecifiedConv("EST", new Date()));
}
输出
Fri Mar 31 15:58:50 IST 2017
Formatted Date In String Format: 03/31/2017 05:28:50
Formatted Date In Date Format: Fri Mar 31 15:58:50 IST 2017
输出中字符串和日期格式的格式化日期不同。
答案 0 :(得分:2)
班级java.util.Date
确实代表一个特定的时间点,并且本身与时区无关。
尽管如此,您可以将时区应用于SimpleDateFormat
以相应地格式化您的日期,以便在特定时区显示(例如,如果您希望在某处显示格式化的字符串)。
但是,如果现在解析格式化日期,日期对象本身将不再包含有关时区的任何信息。
如果您想在对象级别使用时区,可以查看ZonedDateTime。
<强>更新强>
假设您要将给定的String
转换为包含某个时区中日期信息的对象,您可以这样做:
ZonedDateTime dateTime = ZonedDateTime.parse("2007-12-03T10:15:30+01:00[Europe/Paris]");
答案 1 :(得分:1)
日期实例不保留任何格式信息。有关详细信息,请查看Stackoverflow question。您将通过更好地了解Date对象来获得答案。
答案 2 :(得分:0)
Answer by JDC有正确的想法。
我将展示如何使用现代java.time类来取代应该避免的麻烦的旧遗留日期时间段(Date
,Calendar
等)。
首先,你的两个论点。
对于时区,请指定continent/region
格式为Pacific/Auckland
,例如proper time zone name,America/Montreal
或EST
。切勿使用诸如IST
或ZoneId z = ZoneId.of( "America/Montreal" );
之类的3-4字母缩写,因为它们不是真正的时区,不是标准化的,甚至不是唯一的(!)。
Date
对于Instant
,请转换为java.time中的等效项Date
。 Africa/Casablanca
类代表Instant
中时间轴上的一个时刻,分辨率为UTC(小数部分最多九(9)位)。与Instant
一样,Instant instant = myJavaUtilDate.toInstant();
始终位于nanoseconds。
要在遗留类和java.time类之间进行转换,请查看添加到旧类的新方法。
ZonedDateTime zdt = instant.atZone( z );
DateTimeFormatter
使用DateTimeFormatter f = DateTimeFormatter.ofPattern( "MM/dd/uuuu HH:mm:ss" , Locale.US );
String output = zdt.format( f );
生成表示该值的字符串。不要将日期时间对象与其值的字符串表示形式混淆。
apply plugin: 'com.android.application'
android {
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
applicationId "com.example.testapp"
minSdkVersion 14
targetSdkVersion 25
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {
compile fileTree(include: ['*.jar'], dir: 'libs')
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:25.0.0'
compile 'com.android.support:design:25.0.0'
compile 'com.android.support:support-annotations:25.0.0'
compile 'com.android.support:support-v4:25.0.0'
}
Error:(497) Attribute "navigationMode" already defined with incompatible format.
Error:(497) Attribute "displayOptions" already defined with incompatible format.
Error:(506) Attribute "layout_scrollFlags" already defined with incompatible format.
Error:(511) Attribute "actionBarSize" already defined with incompatible format.
Error:(515) Attribute "collapsedTitleGravity" already defined with incompatible format.
Error:(515) Attribute "expandedTitleGravity" already defined with incompatible format.
Error:(516) Attribute "layout_collapseMode" already defined with incompatible format.
Error:(518) Attribute "buttonTintMode" already defined with incompatible format.
Error:(520) Attribute "layout_anchorGravity" already defined with incompatible format.
Error:(523) Attribute "fabSize" already defined with incompatible format.
Error:(526) Attribute "showDividers" already defined with incompatible format.
Error:(530) Attribute "showAsAction" already defined with incompatible format.
Error:(544) Attribute "tabMode" already defined with incompatible format.
Error:(544) Attribute "tabGravity" already defined with incompatible format.
Error:(549) Attribute "backgroundTintMode" already defined with incompatible format.
Error:(7, 5) Original attribute defined here.
Error:(12, 5) Original attribute defined here.
Error:(52, 5) Original attribute defined here.
Error:(82, 5) Original attribute defined here.
Error:(204, 5) Original attribute defined here.
Error:(216, 5) Original attribute defined here.
Error:(188, 5) Original attribute defined here.
Error:(230, 5) Original attribute defined here.
Error:(242, 5) Original attribute defined here.
Error:(270, 5) Original attribute defined here.
Error:(279, 5) Original attribute defined here.
Error:(286, 5) Original attribute defined here.
Error:(336, 5) Original attribute defined here.
Error:(340, 5) Original attribute defined here.
Error:(382, 5) Original attribute defined here.