我想这样显示时间
09/07/18,23:15:00 IST
我使用上述时间格式,但是show timezone的实例像这样IST
,它的show GMT+05:30
。我使用下面的代码来解析日期:-
fun parseDate(time: String?): String? {
if (time != null) {
val inputPattern = "yyyy-MM-dd'T'HH:mm:ss"
val outputPattern = "MM/dd/yy, HH:mm:ss zzz"
val inputFormat = SimpleDateFormat(inputPattern, Locale.getDefault())
val outputFormat = SimpleDateFormat(outputPattern, Locale.getDefault())
var date: Date? = null
var str: String? = null
try {
date = inputFormat.parse(time)
str = outputFormat.format(date)
} catch (e: ParseException) {
e.printStackTrace()
}
return str
}
return time
}
任何人都可以帮助我解决这个问题。
答案 0 :(得分:0)
您必须像这样设置所需的时区
outputFormat.timeZone = TimeZone.getTimeZone("Asia/Calcutta") // this is a unique identifier of "IST"
示例:https://try.kotlinlang.org/#/UserProjects/ulc8sg2dslsbgt4qsauqd1a1sv/akvvttd16f1sqjcg6rm7smuh6p
答案 1 :(得分:0)
根据文档,该文件应为:“ MM / dd / yy,HH:mm:ss zz”。这是两个“ z”而不是3。
从this other question开始,您必须在TimeZone
上设置SimpleDateFormat
。
z:太平洋标准时间
zz:PST
zzz:GMT-08:00
但是正如OP所说的那样,这三种选择给出了相同的输出。
示例:
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;
public class HelloWorld{
public static void main(String []args){
SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yy, HH:mm:ss zz");
Date date = new Date();
sdf.setTimeZone(TimeZone.getTimeZone("IST"));
String txtDate = sdf.format(date);
System.out.println(txtDate);
sdf = new SimpleDateFormat("MM/dd/yy, HH:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("IST"));
txtDate = sdf.format(date);
System.out.println(txtDate);
sdf = new SimpleDateFormat("MM/dd/yy, HH:mm:ss zzz");
sdf.setTimeZone(TimeZone.getTimeZone("IST"));
txtDate = sdf.format(date);
System.out.println(txtDate);
}
}
输出:
09/07/18, 18:26:08 IST
09/07/18, 18:26:08 IST
09/07/18, 18:26:08 IST
答案 2 :(得分:0)
根据文档https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html,您必须使用'z'而不是'zzz,并且还尝试为日期格式设置时区,如下所示。
inputFormat.timeZone = TimeZone.getTimeZone("IST")