转换 "MMM dd, yyyy HH:mm:ss a" 格式的日期为 "MM.dd"

7

我希望将日期格式从"MMM dd, yyyy HH:mm:ss a"转换为"MM.dd"。 以下是我的代码:

SimpleDateFormat ft = new SimpleDateFormat ("MMM dd, yyyy hh:mm:ss a");
t = ft.parse(date); //Date is Sep 16, 2015 10:34:23 AM and of type string.
ft.applyPattern("MM.dd"); 

但我在t = ft.parse(date);处遇到了异常。

请帮忙解决。


这是Java还是JavaScript? - tcigrand
这看起来不像是Javascript - 这看起来像Java。你在哪个地区?你没有在SimpleDateFormat构造函数中指定它,所以它将使用你的默认语言环境 - 尝试指定Locale.US... - Jon Skeet
为什么需要使用SimpleDateFormat?你不能只是简单地使用t.getFullYear() + "." + t.getDay()吗?既然你已经有了日期对象。 - Tianxiang Zhang
使用JavaScript,您可以访问以下链接:https://dev59.com/jXE85IYBdhLWcg3w2HNa - Afroza Yasmin
你能在代码中包含t的声明吗? - CupawnTae
显示剩余2条评论
2个回答

13
三种可能的解释:
  1. 您的默认语言环境与输入日期不兼容,例如它无法理解 Sep 作为月份名称。
  2. 输入字符串有问题,或者
  3. t 是错误的类型(例如 java.sql.Date 而不是 java.util.Date,或者完全是其他类型),或未声明。
您应该在问题中包含异常的详细信息以确定是哪种情况,但以下是一个使用基本上您自己的代码的工作示例,其中添加了特定的 Locale
SimpleDateFormat ft = new SimpleDateFormat("MMM dd, yyyy hh:mm:ss a", Locale.US);
java.util.Date t=ft.parse("Sep 16, 2015 10:34:23 AM");
ft.applyPattern("MM.dd");
System.out.println(ft.format(t));

输出:

09.16

使用您的代码会导致“无法解析日期”异常。 - Nishant
@Nishant听起来像是地域设置问题——试试我的更新代码。 - CupawnTae
1
确实是一个本地化问题。谢谢。 - Nishant

1
SimpleDateFormat sdf = new SimpleDateFormat("MM.dd", Locale.US);
System.out.println("Formatted Date: " + sdf.format(date));

你的目标是什么?这个问题涉及到解析异常。 - Jacek Cz
1
但是这个问题的目标是将“MMM dd,yyyy HH:mm:ss a”转换为“MM.dd”。 - rafaelasguerra
1
好的,那就是第二阶段了 ;) - Jacek Cz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接