我有一個格式爲yyyy-MM-dd hh:mm:ss
的jspinner。問題是微調'hh'只能達到'12'值。我怎樣才能使它達到24小時?格式化JSpinner上的日期
3
A
回答
12
你必須定義兩件事JSpinner(本教程的基本內容完全回答你的問題)
例如
import java.awt.*;
import java.text.SimpleDateFormat;
import java.util.*;
import javax.swing.*;
import javax.swing.event.*;
public class TimeZoneSpinners {
private final String[] zones = {"Asia/Tokyo", "Asia/Hong_Kong",
"Asia/Calcutta", "Europe/Paris", "Europe/London",
"America/New_York", "America/Los_Angeles"
};
private final JLabel[] labels = new JLabel[zones.length];
private final SimpleDateFormat[] formats = new SimpleDateFormat[zones.length];
private JSpinner spinner;
private SpinnerDateModel model;
private SimpleDateFormat format;
private JPanel panel;
private JFrame frame = new JFrame();
public void makeUI() {
Calendar cal = Calendar.getInstance();
Date date = cal.getTime();
model = new SpinnerDateModel();
model.setValue(date);
spinner = new JSpinner(model);
spinner.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
Date date = (Date) ((JSpinner) e.getSource()).getValue();
for (int i = 0; i < labels.length; i++) {
labels[i].setText(formats[i].format(date));
}
}
});
format = ((JSpinner.DateEditor) spinner.getEditor()).getFormat();
format.setTimeZone(TimeZone.getTimeZone(zones[0]));
format.applyPattern("yyyy-MM-dd HH:mm:ss");
panel = new JPanel(new GridLayout(zones.length, 2, 10, 10));
for (int i = 0; i < zones.length; i++) {
formats[i] = new SimpleDateFormat("yyyy-MMM-dd HH:mm:ss");
formats[i].setTimeZone(TimeZone.getTimeZone(zones[i]));
JLabel label = new JLabel(zones[i]);
labels[i] = new JLabel(formats[i].format(date));
panel.add(label);
panel.add(labels[i]);
}
frame.setLayout(new BorderLayout(10, 10));
frame.add(spinner, BorderLayout.NORTH);
frame.add(panel, BorderLayout.CENTER);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.pack();
frame.setVisible(true);
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new TimeZoneSpinners().makeUI();
}
});
}
}
6
JSpinner.DateEditor組件使用與SimpleDateFormat相同的格式。
看看SimpleDateFormat的格式。
你的格式字符串應該是:
yyyy-MM-dd HH:mm:ss
+1
爲了明確......日期時間格式化程序中的大寫字母/小寫字母對於java.text.SimpleDateFormat以及[Joda-Time](http://www.joda.org/joda-time/)都很重要。 'HH'爲24小時制,'hh'爲12小時制。 – 2014-01-19 23:45:46
1
其簡單的嘗試.......
Date datenow = Calendar.getInstance().getTime();
SpinnerDateModel smb = new SpinnerDateModel(datenow, null, null, Calendar.HOUR_OF_DAY);
SPIN_DATE.setModel(smb);
JSpinner.DateEditor d = new JSpinner.DateEditor(SPIN_DATE, "dd-MMM-yyyy");
SPIN_DATE.setEditor(d);
+1
您的代碼示例格式不正確。 – 2014-01-19 23:41:46
相關問題
- 1. 格式化JSON日期格式化的日期基於區域
- 2. 格式化日期?
- 3. 日期格式化
- 4. JTable日期值jspinner
- 5. 格式化日期NSDateFormatter iPhone上的
- 6. AngularJS上格式化的日期過濾
- 7. 格式化日曆日期
- 8. 日期格式化程序沒有正確格式化日期
- 9. MySQL的格式化日期
- 10. 格式化日期PostgreSQL的
- 11. 的JavaScript日期格式化
- 12. 從格式化的日期
- 13. 的Java格式化日期
- 14. Rails的格式化日期
- 15. java中的JSpinner日期/時間格式netbeans
- 16. PowerShell的 - 格式化日期YYMMDD格式
- 17. 日期格式化IOS中的格式
- 18. 格式化日期。如何將int值格式化爲日期格式?
- 19. 格式化日期時間
- 20. php日期格式化
- 21. 格式化JSON日期
- 22. jquery tmpl格式化日期?
- 23. PHP - 格式化日期
- 24. Java格式化日期
- 25. 新日期()格式化
- 26. MVC&日期格式化
- 27. JQGrid日期格式化
- 28. 日期時間格式化
- 29. 格式化日期sql
- 30. NsDateFormatter格式化日期
+1不錯....... – 2013-07-31 19:18:43
注意,有一個初始化與這樣的spinners相關的bug,在[這裏]描述(http://stackoverflow.com/questions/37444308/jspinner-dateeditor-in-java-not-respecting-timezone-on-initialization)。如果您在此示例中添加了一個組件,該組件將捕獲來自微調器的初始焦點,則只有在微調器獲得焦點後纔會應用時區格式。 – predi 2016-09-21 11:08:46