使用 SimpleDateFormat 的问题
显然,我错过了一些基本的东西。我在格式化 jspinner 的值时遇到问题。我尝试了几种不同的方法,但不断收到错误,没有跟踪它们,除了它与我试图从 jspinner 获取价值的方式有关。
这是微调器代码:
//setup date format for both spinners
SimpleDateFormat datePattern = new SimpleDateFormat("MM/dd/yyyy");
JSpinner dateFrom = new JSpinner(new SpinnerDateModel());
dateFrom.setEditor(new JSpinner.DateEditor(dateFrom, datePattern.toPattern()));
JPanel dateFromPanel = new JPanel(new GridLayout());
dateFromPanel.add(dateFrom);
dateFromPanel.setBorder(new TitledBorder("Date - From"));
这是我当前尝试获取格式的方式:
SimpleDateFormat sdfSource = new SimpleDateFormat("MM/dd/yyyy");
Date from = sdfSource.parse(dateFrom.getValue().toString());
SimpleDateFormat sdfDestination = new SimpleDateFormat("MM/dd/yyyy");
String dosFrom = sdfDestination.format(from);
当前错误: 线程“main”中出现异常 java.text.ParseException:无法解析的日期:“Mon Oct 23 00:00:00 EDT 2006”
Apparently, I'm missing something fundamental. I'm having a problem with formatting the value of a jspinner. I've tried a couple different ways and keep receiving an error, didn't keep track of them, other than it has to do with how I'm trying to grab the value from jspinner.
Here is the spinner code:
//setup date format for both spinners
SimpleDateFormat datePattern = new SimpleDateFormat("MM/dd/yyyy");
JSpinner dateFrom = new JSpinner(new SpinnerDateModel());
dateFrom.setEditor(new JSpinner.DateEditor(dateFrom, datePattern.toPattern()));
JPanel dateFromPanel = new JPanel(new GridLayout());
dateFromPanel.add(dateFrom);
dateFromPanel.setBorder(new TitledBorder("Date - From"));
Here is how I'm currently trying to get the format:
SimpleDateFormat sdfSource = new SimpleDateFormat("MM/dd/yyyy");
Date from = sdfSource.parse(dateFrom.getValue().toString());
SimpleDateFormat sdfDestination = new SimpleDateFormat("MM/dd/yyyy");
String dosFrom = sdfDestination.format(from);
Current error:
Exception in thread "main" java.text.ParseException: Unparseable date: "Mon Oct 23 00:00:00 EDT 2006"
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我怀疑问题是这样的:
我怀疑
dateFrom.getValue()
只是返回一个Date
- 当然它没有任何关联的格式。你不应该解析它,而应该直接投射它:当然,我可能是错的......但这将是我的第一个想法。
I suspect the problem is this:
I suspect
dateFrom.getValue()
is just returning aDate
- which of course doesn't have any associated format. Instead of parsing that, you should just cast it:I could be wrong, of course... but that would be my first thought.
您必须阅读有关 JSpinners 的教程并设置
noreferrer">SpinnerDateModel for
JSpinner
instace,那么您就不需要从JSpinner
简单示例 来使用SpinnerDateModelyou have to read tutorial about JSpinners and to set SpinnerDateModel for
JSpinner
instace, then you couldn't needed to solve parsingDate instance
fromJSpinner
simple example for usage of SpinnerDateModel
我怀疑这是因为您的 JSpinner#getValue() 方法返回了一个 Date 并且您不需要解析它。您可以尝试仅替换为
Calling
Date.toString()
始终返回与当前语言环境相同的默认格式的日期(“Mon Oct 23 00:00:00 ...”),这就是为什么您在尝试解析它时遇到异常。I suspect it's because your
JSpinner#getValue()
method is returning aDate
and you don't need to parse it. You might try replacing with justCalling
Date.toString()
always returns a date in the same default format for the current locale ("Mon Oct 23 00:00:00 ...") which is why you're getting an exception on trying to parse it.您应该使用
问题是 dateFrom 实际上返回选定的日期,而 Date.toString() 不会以您使用的格式返回日期。
You should use
The problem is that dateFrom actually returns the selected date, and Date.toString() doesn't return the date in the format you use.