Java 对时间和日期的相关处理-阿里云开发者社区

开发者社区> 数据库> 正文

Java 对时间和日期的相关处理

简介:

1. 获取当前系统时间和日期并格式化输出

复制代码
import java.util.Date;
import java.text.SimpleDateFormat;

public class NowString {
public static void main(String[] args) { 
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
System.out.println(df.format(new Date()));// new Date()为获取当前系统时间
}
}
复制代码

2. 在数据库里的日期只以年-月-日的方式输出,可以用下面两种方法:

复制代码
1、用convert()转化函数:

String sqlst = "select convert(varchar(10),bookDate,126) as convertBookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'";

System.out.println(rs.getString("convertBookDate"));

2、利用SimpleDateFormat类:

先要输入两个java包:

import java.util.Date;
import java.text.SimpleDateFormat;

然后:

定义日期格式:SimpleDateFormat sdf = new SimpleDateFormat(yy-MM-dd);

sql语句为:String sqlStr = "select bookDate from roomBook where bookDate between '2007-4-10' and '2007-4-25'";

输出:

System.out.println(df.format(rs.getDate("bookDate")));
复制代码

 

3.Java中时间比较大小

方法一:

复制代码
DateFormat fmt = new SimpleDateFormat("yyyy-MM-dd");

String dateBegin=fmt.format(carrierCommand.getDateBegin());

String dateEnd=fmt.format(carrierCommand.getDateEnd());

//如果获得的日期格式不是'2008-05-22',就必须要格式化一下日期

String dateBegin = request.getParameter("dateBegin");

String dateEnd = request.getParameter("dateEnd");

if(java.sql.Date.valueOf(dateBegin).after(java.sql.Date.valueOf(dateEnd))){

//起始日期大于结束日期

errors.rejectValue("dateEnd", null, "起始日期必须小于结束日期!");

}

StringBuffer timeBegin = new StringBuffer();

StringBuffer timeEnd = new StringBuffer();

timeBegin.append(request.getParameter("timeBegin"));

timeEnd.append(request.getParameter("timeEnd"));

timeBegin.append(":00");

timeEnd.append(":00");

if(java.sql.Date.valueOf(dateBegin).equals(java.sql.Date.valueOf(dateEnd)))

{ //起始日期等于结束日期

if(java.sql.Time.valueOf(timeBegin.toString()).equals(java.sql.Time.valueOf

(timeEnd.toString())))//时间相同

{

errors.rejectValue("timeEnd", null, "起始与结束日期相同,起始时间必须小于结束时间!");

}

if(java.sql.Time.valueOf(timeBegin.toString()).after(java.sql.Time.valueOf

(timeEnd.toString())))//时间相同

{

errors.rejectValue("timeEnd", null, "起始与结束日期相同,起始时间必须小于结束时间!");

}

}
复制代码

方法二:

复制代码
public class test {

public static void main(String args[]) {

int i= compare_date("1995-11-12 15:21", "1999-12-11 09:59");

System.out.println("i=="+i);

}

public static int compare_date(String DATE1, String DATE2) {

DateFormat df = new SimpleDateFormat("yyyy-MM-dd hh:mm");

try {

Date dt1 = df.parse(DATE1);

Date dt2 = df.parse(DATE2);

if (dt1.getTime() > dt2.getTime()) {

System.out.println("dt1 在dt2前");

return 1;

} else if (dt1.getTime() < dt2.getTime()) {

System.out.println("dt1在dt2后");

return -1;

} else {

return 0;

}

} catch (Exception exception) {

exception.printStackTrace();

}

return 0;

}

}
复制代码

 

4.java.util.Date和java.sql.Date的区别及应用

java.util.Date 就是在除了SQL语句的情况下面使用
java.sql.Date 是针对SQL语句使用的,它只包含日期而没有时间部分
它都有getTime方法返回毫秒数,自然就可以直接构建
java.util.Date d = new java.util.Date(sqlDate.getTime());

 

java.util.Date 是 java.sql.Date 的父类(注意拼写)
前者是常用的表示时间的类,我们通常格式化或者得到当前时间都是用他
后者之后在读写数据库的时候用他,因为PreparedStament的setDate()的第2参数和ResultSet的getDate()方法的第2个参数都是java.sql.Date 
转换是

复制代码
java.sql.Date date=new Java.sql.Date();
java.util.Date d=new java.util.Date (date.getTime());

java.util.Date转为java.sql.Date
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.util.Date utilDate=new Date();
java.sql.Date sqlDate=new java.sql.Date(utilDate.getTime());
java.sql.Time sTime=new java.sql.Time(utilDate.getTime());
java.sql.Timestamp stp=new java.sql.Timestamp(utilDate.getTime());
复制代码

 

继承关系:java.lang.Object --> java.util.Date --> java.sql.Date
具体的转换关系就是java.util.Date d=new java.util.Date (new Java.sql.Date());

5.取得指定日期是星期几

取得指定日期是星期几可以采用下面两种方式取得日期是星期几:

a、使用Calendar类

  1. //根据日期取得星期几  
  2.     public static String getWeek(Date date){  
  3.         String[] weeks = {"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};  
  4.         Calendar cal = Calendar.getInstance();  
  5.         cal.setTime(date);  
  6.         int week_index = cal.get(Calendar.DAY_OF_WEEK) - 1;  
  7.         if(week_index<0){  
  8.             week_index = 0;  
  9.         }   
  10.         return weeks[week_index];  
  11.     }  


b、使用SimpleDateFormat类

  1. //根据日期取得星期几  
  2.     public static String getWeek(Date date){   
  3.         SimpleDateFormat sdf = new SimpleDateFormat("EEEE");  
  4.         String week = sdf.format(date);  
  5.         return week;  
  6.     }  

注:格式化字符串存在区分大小写
对于创建SimpleDateFormat传入的参数:EEEE代表星期,如“星期四”;MMMM代表中文月份,如“十一月”;MM代表月份,如“11”;
yyyy代表年份,如“2010”;dd代表天,如“25”

 

6.取得日期是某年的第几周

根据日期入得日期是某年的第几周。

  1. //取得日期是某年的第几周  
  2.     public static int getWeekOfYear(Date date){  
  3.         Calendar cal = Calendar.getInstance();  
  4.         cal.setTime(date);  
  5.         int week_of_year = cal.get(Calendar.WEEK_OF_YEAR);  
  6.         return week_of_year;  
  7.     }  
 

 

7.得到某年的某个月有多少天

 已知年份和月份,取得该月有多少天。

  1. //取得某个月有多少天  
  2.     public static int getDaysOfMonth(int year,int month){  
  3.         Calendar cal = Calendar.getInstance();  
  4.         cal.set(Calendar.YEAR, year);  
  5.         cal.set(Calendar.MONTH, month-1);  
  6.         int days_of_month = cal.getActualMaximum(Calendar.DAY_OF_MONTH);  
  7.         return days_of_month;  
  8.     }   
 

 

8.取得两个日期之间的相差多少天

已知两个日期,计算它们之间相差多少天。

  1. // 取得两个日期之间的相差多少天  
  2.  public static long getDaysBetween(Date date0, Date date1) {  
  3.       long daysBetween = (date0.getTime() - date1.getTime() + 1000000) / 86400000;// 86400000=3600*24*1000  用立即数,减少乘法计算的开销  
  4.         return daysBetween;  
  5.     }
 

 

9.在Java中将String型转换成Date型

1
2
3
4
5
6
7
java.util.Date =
java.text.DateFormat.getDateInstance().parse(date String); java.util.Date = java.text.DateFormat.getDateInstance().parse(date
String);or SimpleDateFormat format = new SimpleDateFormat( "dd.MM.yyyy"
);
Date date = format.parse( myString );
SimpleDateFormat format = new SimpleDateFormat( "dd.MM.yyyy" );
Date date= format.parse( myString );

  

10.开发过程中会遇到输出某种编码的字符,如iso8859-1等,实现输出一个某种编码的字符串:

1
2
3
4
5
6
7
8
9
10
11
12
13
//字符串打散重组
Public String translate (String str) {
 
  String tempStr = "";
  try {
      tempStr = new String(str.getBytes("ISO-8859-1"), "GBK");
      tempStr = tempStr.trim();
    
    catch (Exception e) { 
      System.err.println(e.getMessage()); 
      
    return tempStr; 
    }

 

 


本文转自邴越博客园博客,原文链接:http://www.cnblogs.com/binyue/p/3555594.html,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
数据库
使用钉钉扫一扫加入圈子
+ 订阅

分享数据库前沿,解构实战干货,推动数据库技术变革

其他文章