我知道这可能是一个简单的问题,但我是Java新手,我的经验主要是使用PHP或C#。
我正在开发一个eclipse RCP项目并使用Google Window Builder。
我需要做的就是从名为dateTimeDOB
的 DateTime 控件中获取日期
如果日期或月份值是单个数字,则必须以此格式返回日期(日/月/日),前提是“0”。
我认为DateTime控件类型是
org.eclipse.swt.widgets.DateTime
所以例如:
String strDate = dateTimeDOB.getDate("dd/mm/yyyy");
提前致谢
答案 0 :(得分:12)
更清洁的方法(恕我直言):
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());
答案 1 :(得分: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 :(得分:2)
答案 3 :(得分: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
类型。这样你除了别的什么之外你不需要担心时区。