当我拥有所有 Joda DateTime 对象时,如何使用 SWT 日历?

How can I use an SWT Calendar when I have all Joda DateTime objects?

我正在 Windows(Eclipse 和 SWT)上开发 Java GUI。我需要 GUI 用户输入日期(日历小部件),然后 date/time(来自数据源)操作包括处理不同的时区。

我切换到 Joda 以获得更好的 date/time 操作,因为我认为这比标准 SWT 更好。但是,据我了解,Joda 不支持自己的日历小部件。

谁能告诉我如何做才能与 SWT 和 Joda 兼容?

我看到直接引用:

private org.joda.time.DateTime jodaDateTime;
private swt.DateTime swtDateTime;

是一个选项,但想知道还有哪些选项。

这是一个足够简单的转换,您只需创建实用方法来与默认 SWT 小部件进行转换,例如

public class DateUtils {
  public static org.joda.time.DateTime makeJodaFromSWT(
                                org.eclipse.swt.widgets.DateTime widget) {
    return new DateTime(widget.getYear(),
                        widget.getMonth(),
                        widget.getDay(),
                        widget.getHours(),
                        widget.getMinutes(),
                        widget.getSeconds());
  }

  public static void updateSWTwithJoda(
                                org.eclipse.swt.widgets.DateTime widget,
                                org.joda.time.DateTime dateTime) {
    widget.setYear(dateTime.getYear());
    widget.setMonth(dateTime.getMonthOfYear());
    widget.setDay(dateTime.getDayOfMonth());
    widget.setHours(dateTime.getHourOfDay());
    widget.setMinutes(dateTime.getMinuteOfHour());
    widget.setSeconds(dateTime.getSecondOfMinute());
  }
}

public static 实用方法相比,我需要更多地了解您的项目才能提出 "smarter" 包装方案,但这应该能让您走上正轨。