我试图弄清楚如何使用 SmartGWT 的 TimeItem、Calendar 和 DateItem。我被困住了,因为所有这些组件都将它们的数据转换为客户的时区。为了论证的缘故,让我们以 TimeItem 为例。
如果您将值设置为 (Java.Util.Date)12:00,动态表单显示 19:30,我有一个 DynamicForm,其中有一个 TimeItem。如果您通过 TimeItem.getValue 获得该值,它将返回 (com.smartgwt.client.util.LogicalTime)13:30。代码示例如下
DateTimeFormat timeFormatter = DateTimeFormat.getFormat("HHmmss");
layout = new VLayout();
form = new DynamicForm();
item = new TimeItem("TIME","TIME");
form.setItems(item);
layout.addMember(form);
Button btn = new Button("put");
btn.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Date parse = timeFormatter.parse("120000");
System.out.println(parse.toString());// prints out Tue Aug 20 12:00:00 VET 2013
form.getField("TIME").setValue(parse); // sets 19:30 seen by the user
//form.getField("TIME").setValue("120000");
}
});
Button btn2 = new Button("get");
btn2.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
Object value = form.getField("TIME").getValue();
System.out.println(value.toString());// prints out Thu Jan 01 13:30:00 VET 1970
//However if the value is set using a simple string,
//(like so "form.getField("TIME").setValue("120000");")
//this line
//prints out Thu Jan 01 06:00:00 VET 1970
}
});
layout.addMember(btn);
layout.addMember(btn2);
layout.draw();
我的计算机时区设置为:(UTC+02:00) 伊斯坦布尔,如果这样可以清除任何东西
预先感谢您的任何帮助。