从 DateTime 控件获取日期

问题描述 投票:0回答:4

我正在开发 Eclipse RCP 项目并使用 Google Window Builder。

我需要做的就是从名为:dateTimeDOB

DateTime

控件获取日期

它必须以这种格式返回日期(dd/mm/yyyy)。如果日或月值是一位数字,则前面必须有“0”。

我认为

DateTime
控制类是
org.eclipse.swt.widgets.DateTime

举个例子:

String strDate = dateTimeDOB.getDate("dd/mm/yyyy");
java swt
4个回答
13
投票

更清洁的方法(恕我直言):

Calendar instance = Calendar.getInstance();
instance.set(Calendar.DAY_OF_MONTH, dateTimeDOB.getDay());
instance.set(Calendar.MONTH, dateTimeDOB.getMonth());
instance.set(Calendar.YEAR, dateTimeDOB.getYear());
String dateString = new SimpleDateFormat("dd/MM/yyyy").format(instance.getTime());

8
投票
    DateTime dateTimeDOB = ...

    int day = dateTimeDOB.getDay();
    int month = dateTimeDOB.getMonth() + 1;
    int year = dateTimeDOB.getYear();

    String strDate = (day < 10) ? "0" + day + "/" : day + "/";
    strDate += (month < 10) ? "0" + month + "/" : month + "/";
    strDate += year;

2
投票

您还可以查看

CDateTime
小部件,其中有

Date date = cDateTime.getSelection();

以及整体可用性。缺点是它不是 SWT 的一部分,而是一个附加库。


1
投票

鉴于控件已经分别为您提供了年/月/日,您只需格式化这些值即可,您可以使用

String.format
:

String text = String.format("%02d/%02d/%04d",
                            dateTimeDOB.getDay()
                            // getMonth() returns a value in the range [0, 11]
                            dateTimeDOB.getMonth() + 1,
                            dateTimeDOB.getYear());
System.out.println(text); // 03/06/2012 or whatever

请注意,这种格式在美国会被误解,并且在其他文化中也可能不合适。这是否重要取决于您的应用程序。

您是否按照 Tom Seidel 的答案直接从单个值转到文本或通过

Calendar
(或类似类型)部分取决于您的代码如何组合在一起。如果您“绝对”想要从 UI 控件转换为文本格式,并且中间的任何代码都不需要了解此信息作为日期,那么我编写的内容就可以了。但是,如果您需要在不同方法之间传递值等,那么将其转换为更自然的数据类型是有意义的。我个人建议使用 Joda Time,在本例中是 LocalDate 类型。这样你就不需要担心时区,除此之外。
    

© www.soinside.com 2019 - 2024. All rights reserved.