【问题标题】:Servlet get date and timeServlet 获取日期和时间
【发布时间】:2013-02-14 05:47:50
【问题描述】:

我正在使用以下代码来获取日期和时间

public class offer extends HttpServlet {


@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

    response.setContentType("text/html;charset=UTF-8");
    PrintWriter out = response.getWriter();
    try {

        out.println("<html>");
        out.println("<head>");
        out.println("<title>Servlet offer</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1> sv sugar mills</h1>");
        doPost(request,response);
        out.println("</body>");
        out.println("</html>");

    } finally {
        out.close();
    }
} 

 @Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
     response.setContentType("text/html;charset=UTF-8");
     PrintWriter out = response.getWriter();
     java.sql.Date sqlDate=null,ofrmonth=null,ctime=null;

    dat="14/02/2013";
    try
    {
     java.util.Date date=new SimpleDateFormat("dd/MM/yyyy").parse(dat);
     //ctime=new java.sql.Date(date.getTime());
     sqlDate = new java.sql.Date(date.getTime());
     out.println(sqlDate);
     out.Println(ctime);
    }
    catch(Exception e)
    {
     out.println(e);
    }
 }
@Override
public String getServletInfo() {
    return "Short description";
}// </editor-fold>

}

这里,util.Date 变量日期显示为“Thu Feb 14 00:00:00 IST 2013”​​。所以我很容易得到 sql.Date 为“2013-02-14”。另外,我想从中获得时间。在 ctime 变量中,我想获取时间并显示它。格式应为 24 小时格式。但我不知道如何得到它。

我使用了一些函数,例如 getHours() 和 getDate(),但我找不到解决方案。有人可以帮我争取时间。提前致谢

我需要时间为 00:00:00 (hh:mm:ss)

【问题讨论】:

  • 请发布实际演示您遇到的问题的可编译代码。你的问题没有什么意义;你没有时间,只有日期。此外,java.sql.Date 只是日期 - 它代表 SQL DATE
  • 请查阅java.util.Datejava.sql.DateCalendar 的文档。这些链接中有大量信息。您还应该搜索一些简单的示例。除非您有特殊需要,否则您应该使用java.util.Date 而不是您当前正在使用的java.sql.Date
  • 这里使用的doPost 是荒谬的。而不是为此使用doPost,您应该创建另一个名为printDate() 的函数并在您的doGet 中调用它。 doPost 不应该打电话给doGet 也不应该doGet 打电话给doPost,除非这就是他们所做的一切,即让两者做完全相同的事情。即便如此,大多数开发人员都会皱眉头。但至少这是有道理的。

标签: java datetime servlets time sqldatetime


【解决方案1】:

试试这个:

Calendar c = Calendar.getInstance();
c.setTime(sqlDate);
System.out.println(c.get(Calendar.HOUR));
System.out.println(c.get(Calendar.MINUTE));
System.out.println(c.get(Calendar.SECOND));

除非您为Calendar 对象设置了时区,否则以上将返回您机器所在时区的时间。

如果您想要HH:mm:ss 形式的单个String 作为输出,您可以使用@zvzdhk 指出的SimpleDateFormat

片段:

SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
sdf.setTimeZone(TimeZone.getTimeZone("IST"));
System.out.println(sdf.format(sqlDate));

请注意,TimeZone.getTimeZone 允许使用 "GMT+5:30""PST" 等参数。请阅读 documentation 了解更多信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-01
    • 2012-12-04
    • 2016-11-06
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-04-25
    相关资源
    最近更新 更多