简体   繁体   English

如何从用户输入日期中抽出时间?

[英]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.

相关问题 如何使用语音识别器从用户那里获取任何时间输入 - How to take any time input from user using speech recognizer 如何获取用户输入的int数并同时存储用户的输入? - how to take the number of an int input from the user and at the same time store the user's input? 如何在 JDBC 中获取用户输入作为声明? - How to take take user input in JDBC for a Statement? Java 如何获取用户输入 - Java how to take user input 从用户那里获取日期输入并将其另存为Java中的日期 - Take date input from user and save it as date in java 获取用户输入,放入数组并打印出每个字母的使用次数 - Take user input, put into an array and print out how many times each letter is used 试图弄清楚如何将回车键作为用户输入来发送信号 printMenu() - Trying to figure out how to take enter key as user input to signal printMenu() 我无法弄清楚如何将用户输入放在逗号分隔的列表中并将其放入ArrayList中 - I cannot figure out how to take user input in a comma-separated list and place it into an ArrayList 用Java 8在新的日期/时间中减去小时,分钟和秒 - Take out the hour, min and second in new Date/Time in Java 8 如何更改程序以允许用户输入时间? - How can I change my program to allow user input to take the time?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM