2012-02-28 45 views
2

我在我的代码中使用时一些麻烦:的Java的JFormattedTextField时间格式化

txtDauer = new JFormattedTextField(); 
txtDauer.setFormatterFactory(new DefaultFormatterFactory(
    new DateFormatter(DateFormat.getTimeInstance()))); 

当我使用的setValue(0)以上FormattedTextfield文本字段显示01:00:00,而不是00:00:00 。

在代码的另一条线用这种方法时,也会发生同样的问题:

public static String convertLongToString(Long time) { 
    String strtime = new SimpleDateFormat("HH:mm:ss").format(time); 
    return strtime; 
} 

使用该方法以“0”则返回strtime =“01:00:00”。

回答

2

的问题是时区,默认电脑的时区是北京时间。

该解决方案设定GMT +0:

DateFormat df = new SimpleDateFormat("HH:mm:ss"); 
df.setTimeZone(TimeZone.getTimeZone("GMT")); 

Run and preview.

1

对于DateDate & TimeTime使用JSpinnerSpinnerDateModel,例如关于使用SimpleDateFormat

+0

不幸的是,我不能用的JSpinner取代我的JFormattedTextField原因有二:第一,文本框是不是由用户和第二个可编辑它实际上是一个可以通过启动,暂停和停止按钮来控制的计时器。但无论如何,感谢您的努力。 – 2012-02-28 14:58:12