【发布时间】:2011-04-19 20:51:26
【问题描述】:
'2009-12 Dec' should be converted to '31-DEC-2009'
'2010-09 Sep' should be converted to '30-SEP-2010'
'2010-02 Feb' should be converted to '28-FEB-2010'
'2008-02 Feb' should be converted to '29-FEB-2008'
值 2009-12 Dec、2008-02 Feb 将在下拉列表中显示给用户。用户无法选择DAY。
应将用户选择的值传递给数据库。但是数据库需要DD-MMM-YYYY 格式的日期。该查询具有“<= USER_DATE”条件。因此,应自动选择该月的最后一天并将其传递给数据库。
请帮助我编写完成上述工作的函数。
static SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM MMM");
public static String convertMapedToSqlFormat(final String maped) {
String convertedMaped = null;
//....
return convertedMaped;
}
@Test
public void testConvertMapedToSqlFormat() {
String[] mapedValues = { "2009-12 Dec", "2009-11 Nov", "2009-10 Oct",
"2009-09 Sep", "2009-08 Aug", "2009-07 Jul", "2009-06 Jun",
"2009-05 May", "2009-04 Apr", "2009-03 Mar", "2009-02 Feb",
"2009-01 Jan", "2008-12 Dec", "2008-11 Nov", "2008-10 Oct" };
for (String maped : mapedValues) {
System.out.println(convertMapedToSqlFormat(maped));
}
}
【问题讨论】:
-
您的 2008 年样本结果中有错字。
-
@martin Clayton:更正了。谢谢:)
-
真的,你需要使用
<和下个月的第一天,否则你会失去当月最后一天的事件。示例2009-12-31T13:00:00应该在2009-12 Dec范围内,但使用您的方法则不会。 -
@Ben
-
是的,因为
2009-12-31T13:00:00 <= 2009-12-31是假的。正确的检查是2009-12-31T13:00:00 < 2010-01-01。
标签: java date date-format simpledateformat