如何格式化输出中具有时区的特定格式的日期

时间:2017-05-22 19:26:08

标签: java date simpledateformat

我有一个像这样的字符串格式的日期。它来自以下格式的其他一些源,我无法改变它:

2025-08-08T15%3A41%3A46

我现在必须以这种格式转换上面的字符串日期:

Fri Aug 08 15:41:46 GMT-07:00 2025

以下是我的尝试:

String decodedDate = URLDecoder.decode("2025-08-08T15%3A41%3A46", "UTF-8");
SimpleDateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
Date date = dateParser.parse(decodedDate);
System.out.println(date);

这就是它在控制台上输出的内容。它打印出PDT而不是GMT-07:00。我怎么能得到它?

Fri Aug 08 15:41:46 PDT 2025

我也在使用Java 7,我也可以使用joda-time库。这种转换方法可以由多个线程调用。

在所需的输出中,它打印出GMT-07:00,那么如何才能在我的代码中获得时区?

更新: -

这样做怎么样?

 SimpleDateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
 TimeZone.setDefault(TimeZone.getTimeZone("GMT-07:00"));
 String decodedDate = URLDecoder.decode("2025-08-08T15%3A41%3A46", "UTF-8");
 Date date = dateParser.parse(decodedDate);
 System.out.println(date.toString());

1 个答案:

答案 0 :(得分:0)

product.push( new products(tag,"name", price, "path/to/my/item", "description") );

输出:

SimpleDateFormat dateParser = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
String decodedDate = URLDecoder.decode("2025-08-08T15%3A41%3A46", "UTF-8");
Date date = dateParser.parse(decodedDate);

//Decode the given date and convert to Date object

SimpleDateFormat sdf = new SimpleDateFormat("EEE MMM dd hh:mm:ss z-07:00 yyyy", Locale.US);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));

System.out.println(sdf.format(date)); // set the timezone and print in the desired format

更新:正如Fri Aug 08 07:41:46 GMT-07:00 2025 所述,更好的方法是

KevinO