我正在开发 Eclipse RCP 项目并使用 Google Window Builder。
我需要做的就是从名为:dateTimeDOB
的DateTime控件获取日期
它必须以这种格式返回日期(dd/mm/yyyy)。如果日或月值是一位数字,则前面必须有“0”。
我认为
DateTime
控制类是org.eclipse.swt.widgets.DateTime
。
举个例子:
String strDate = dateTimeDOB.getDate("dd/mm/yyyy");
更清洁的方法(恕我直言):
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());
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;
鉴于控件已经分别为您提供了年/月/日,您只需格式化这些值即可,您可以使用
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
类型。这样你就不需要担心时区,除此之外。