JAVA中的时间操作(附DATEDIFF函数用法)经常看见jsp版里有人问时间操作的问题,这些问题一般包括:取当前时间,把一个指定的字符串时间转化成时间类型,求两个时间之间的天数,求一段时间以前的时间,求一段时间以后的时间,在这里就把这些问题汇总一下。<%@ page contentType="text/html;charset=gb2312"%> <%@ page import="java.text.*"%> <%@ page import="java.util.*"%> <% //字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可) java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("M/dd/yyyy hh:mm:ss a",java.util.Locale.US); java.util.Date d = sdf.parse("5/13/2003 10:31:37 AM"); out.println(d); out.println("<br>"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String mDateTime1=formatter.format(d); out.println(mDateTime1); out.println("<br>"); out.println(d.getTime()); out.println("<br>"); //当前时间 Calendar cal = Calendar.getInstance(); // SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss G E D F w W a E F"); String mDateTime=formatter.format(cal.getTime()); out.println(mDateTime); out.println("<br>"); //1年前日期 java.util.Date myDate=new java.util.Date(); long myTime=(myDate.getTime()/1000)-60*60*24*365; myDate.setTime(myTime*1000); String mDate=formatter.format(myDate); out.println(mDate); out.println("<br>"); //明天日期 myDate=new java.util.Date(); myTime=(myDate.getTime()/1000)+60*60*24; myDate.setTime(myTime*1000); mDate=formatter.format(myDate); out.println(mDate); out.println("<br>"); //两个时间之间的天数 SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd"); java.util.Date date= myFormatter.parse("2003-05-1"); java.util.Date mydate= myFormatter.parse("1899-12-30"); long day=(date.getTime()-mydate.getTime())/(24*60*60*1000); out.println(day); out.println("<br>"); //加半小时 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); java.util.Date date1 = format.parse("2002-02-28 23:16:00"); long Time=(date1.getTime()/1000)+60*30; date1.setTime(Time*1000); String mydate1=formatter.format(date1); out.println(mydate1); out.println("<br>"); //年月周求日期 SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM F E"); java.util.Date date2= formatter2.parse("2003-05 5 星期五"); SimpleDateFormat formatter3 = new SimpleDateFormat("yyyy-MM-dd"); String mydate2=formatter3.format(date2); out.println(mydate2); out.println("<br>"); //求是星期几 mydate= myFormatter.parse("2001-1-1"); SimpleDateFormat formatter4 = new SimpleDateFormat("E"); String mydate3=formatter4.format(mydate); out.println(mydate3); out.println("<br>"); %> 附:DATEDIFF 函数 DATEDIFF 函数 返回 VARIANT (LONG) 的值,表示两个指定日期间的时间间隔数目。 语法 DATEDIFF(INTERVAL, DATE1, DATE2[, FIRSTDAYOFWEEK][, FIRSTWEEKOFYEAR]]) DATEDIFF 函数语法中有下列命名参数: 部分 描述
INTERVAL 参数的设定值如下: 设置 描述
常数 值 描述 常数 值 描述
DATEDIFF 函数可用来决定两个日期之间所指定的时间间隔数目。例如,可以使用 DATEDIFF 来计算两个日期之间相隔几日,或计算从今天起到年底还有多少个星期。 为了计算 DATE1 与 DATE2 相差的日数,可以使用“一年的日数”(Y) 或“日”(D)。当 INTERVAL 是“一周的日数”(W) 时,DATEDIFF 返回两日期间的周数。如果 DATE1 是星期一,DATEDIFF 计算到 DATE2 为止的星期一的个数。这个数包含 DATE2 但不包含 DATE1。不过,如果 INTERVAL 是“周”(WW),则 DATEDIFF 函数返回两日期间的“日历周”数。由计算 DATE1 与 DATE2 之间星期日的个数而得。如果 DATE2 刚好是星期日,则 DATE2 也会被加进 DATEDIFF 的计数结果中;但不论 DATE1 是否为星期日,都不将它算进去。 如果 DATE1 比 DATE2 来得晚,则 DATEDIFF 函数的返回值为负数。 FIRSTDAYOFWEEK 参数会影响使用时间间隔符号 “W” 或 “WW” 计算的结果。 如果 DATE1 或 DATE2 是日期文字,则指定的年份成为该日期的固定部分。但是,如果 DATE1 或 DATE2 用双引号 (" ") 括起来,且年份略而不提,则在每次计算表达式 DATE1 或 DATE2 时,当前年份都会插入到代码之中。这样就可以书写适用于不同年份的程序代码。 在计算 12 月 31 日和来年的 1 月 1 日的年份差时,DATEDIFF 返回 1 表示相差一个年份,虽然实际上只相差一天而已。 |
JAVA中的时间操作(附DATEDIFF函数用法)
最新推荐文章于 2021-08-31 15:59:34 发布