[英]How to take time out of user input date?
I have a program that allows users to add an event with a date, tournament name, and location. 我有一个程序,允许用户添加日期,锦标赛名称和位置的事件。 Whenever the date that the user inputs gets saved, there is a time portion that I don't want. 每当用户输入的日期被保存时,就有一个我不想要的时间部分。 How do I get rid of it? 我如何摆脱它? The original table is in oracle, and I am using Spring framework. 原始表在oracle中,并且我正在使用Spring框架。
JSP Page (just the input code) JSP页面(仅输入代码)
<td style="border:0px;">
<select name="month" style="font-family:Arial; font-size:14px; height:28px;">
<option selected disabled>Month</option>
<option value="01">January</option><option value="02">February</option><option value="03">March</option>
<option value="04">April</option><option value="05">May</option><option value="06">June</option>
<option value="07">July</option><option value="08">August</option><option value="09">September</option>
<option value="10">October</option><option value="11">November</option><option value="12">December</option>
</select>
<select name="day" style="font-family:Arial; font-size:14px; height:28px;">
<option selected disabled>Day</option>
<option value="01">1</option><option value="02">2</option><option value="03">3</option><option value="04">4</option>
<option value="05">5</option><option value="06">6</option><option value="07">7</option><option value="08">8</option>
<option value="09">9</option><option value="10">10</option><option value="11">11</option><option value="12">12</option>
<option value="13">13</option><option value="14">14</option><option value="15">15</option><option value="16">16</option>
<option value="17">17</option><option value="18">18</option><option value="19">19</option><option value="20">20</option>
<option value="21">21</option><option value="22">22</option><option value="23">23</option><option value="24">24</option>
<option value="25">25</option><option value="26">26</option><option value="27">27</option><option value="28">28</option>
<option value="29">29</option><option value="30">30</option><option value="31">31</option>
</select>
<select name="year" style="font-family:Arial; font-size:14px; height:28px;">
<option selected disabled>Year</option>
<option value="2015">2015</option><option value="2016">2016</option><option value="2017">2017</option>
<option value="2018">2018</option><option value="2019">2019</option><option value="2020">2020</option>
</select>
</td>
<td style="border:0px;">
<input id="upcomingTournament" align="middle" name="upcomingTournament" style="padding: 5px 0px 5px 0px; width:500px; height:28px; font-family:Arial; font-size:18px;" type="text"></input>
</td>
<td style="border:0px;">
<input id="upcomingLocation" align="middle" name="upcomingLocation" style="padding: 5px 0px 5px 0px; width:300px; height:28px; font-family:Arial; font-size:18px;" type="text"></input></th>
</td>
Controller Java File 控制器Java文件
@RequestMapping(value = "/NewMatch.do", method = RequestMethod.POST)
public String newMatch(@ModelAttribute("matchForm") MatchesVO searchVO, ModelMap model, HttpServletRequest request) throws Exception {
String date = request.getParameter("year")+"-"+request.getParameter("month")+"-"+request.getParameter("day");
searchVO.setUpcomingDate(date);
if(searchVO.getUpcomingDate()!=null&&searchVO.getUpcomingTournament()!=null&&searchVO.getUpcomingLocation()!=null) {
sampleService.newUpcomingMatch(searchVO);
return "forward:/Matches.do";
}
else {
return "sample/NewMatch";
}
}
SQL XML File SQL XML文件
<insert id="leagueDAO.newUpcomingMatch">
<![CDATA[
INSERT INTO UPCOMINGEVENTS
( UPCOMINGDATE
, UPCOMINGTOURNAMENT
, UPCOMINGLOCATION )
VALUES ( #upcomingDate#
, #upcomingTournament#
, #upcomingLocation# )
]]>
</insert>
You need to choose a proper DateFormat to print out Date as String. 您需要选择适当的DateFormat来将Date打印为String。 Eg 'yyyy-MM-dd' 例如'yyyy-MM-dd'
DateUtils
from common-lang provides a truncate
function, used like this: 来自common-lang的DateUtils
提供了一个truncate
函数,其用法如下:
DateUtils.truncate(yourDate, Calendar.DATE);
You can also create a Calendar
, set unwanted fields (hour, minute, etc) and transform back to date: 您还可以创建Calendar
,设置不需要的字段(小时,分钟等)并转换回日期:
Calendar cal = Calendar.getInstance();
cal.setTime(yourDate);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
cal.set(Calendar.MILLISECOND, 0);
Date truncated = cal.getTime();
As already stated in comments, if you don't need to store the truncated date (no unicity constraint, etc), you can also just store a date with time and format it when you need to display it (see SimpleDateFormat
). 如注释中所述,如果您不需要存储截断的日期(没有唯一性约束等),还可以只存储带有时间的日期,并在需要显示日期时对其进行格式化(请参见SimpleDateFormat
)。
You could alter the insert statement in your SQL XML File to truncate the date during the insert: 您可以更改SQL XML文件中的插入语句,以在插入过程中截断日期:
<insert id="leagueDAO.newUpcomingMatch">
<![CDATA[
INSERT INTO UPCOMINGEVENTS
( UPCOMINGDATE
, UPCOMINGTOURNAMENT
, UPCOMINGLOCATION )
VALUES ( TRUNC( #upcomingDate# )
, #upcomingTournament#
, #upcomingLocation# )
]]>
</insert>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.