`
thomas0988
  • 浏览: 484877 次
  • 性别: Icon_minigender_1
  • 来自: 南阳
社区版块
存档分类
最新评论

java日期操作

 
阅读更多
将Date类型写入数据库的两种方法
先了解几个类: 
1、具体类(和抽象类相对)java.util.Date  
2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat  
3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar  
具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类. 
************************************
一种将java的日期类型直接转换为SQL的日期类型的方法,比较简单但适用性狭窄,
注意一下例子在jdk下编译没有时间,但在jb和Eclipse下就有时间,不知怎么回事
——————————————
public class a {
public static void main(String[] args) {
  
  java.util.Date now = new Date();
  //PreparedStatement类型的setDate方法只接受sql.date类型,所有必须先转换
  java.sql.Date sqlnow = new java.sql.Date(now.getTime());
   try {
    //froName必须放在try中,否则编译不通过,可能froName方法抛出编译时异常了
    //经查阅 public static Class forName(String className) throws     ClassNotFoundException {...}
    Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
    Connection connection = DriverManager.getConnection("jdbc:microsoft:sqlserver://192.168.0.2:1433;DatabaseName=pubs","sa","");
    PreparedStatement ps=connection.prepareStatement("update test set f1=?");
    ps.setDate(1,sqlnow);
    int i = ps.executeUpdate();
   }
    catch (Exception ex) {}
 }
}
**********************************************************
另一种是将java的date类型通过SimpleDateFormat转换为字符串,再写到sql语句中
-----------------------------------------------------------
import java.sql.*;
import java.text.SimpleDateFormat;
import java.util.Date;
public class a{
  public static void main(String[] args) {
  //之所以用kk而不用hh是因为kk是24进制的而不虽操作系统设置变动
  SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
  Date now = new Date();
  //format()方法的返回值是String型
  System.out.println(sdf.format(date));
 }}
-----------------------------------------------------
一下是逆操作,将String转换为Date,parse()方法能抛出ParseException异常,所以你必须使用适当的异常处理技术
try{
    SimpleDateFormat sbf =new SimpleDateFormat("yyyy-MM-dd kk:mm:ss");
    String sdate="2004-05-14 21:29:51";
    Date ddate = sbf.parse(sdate);
    System.out.println(ddate);
    }
catch (Exception ex) { }
**************************************************************
以下是副产品,我们用到的情况比较少
util.date类型
----------------------------------------------
   //1年前日期
   java.util.Date myDate=new java.util.Date();  
   long myTime=(myDate.getTime()/1000)-60*60*24*365;
   myDate.setTime(myTime*1000);
   //明天日期
   myDate=new java.util.Date(); 
   myTime=(myDate.getTime()/1000)+60*60*24;
   myDate.setTime(myTime*1000);
  //两个时间之间的天数
   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);
   //加半小时
   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);
   //年月周求日期
   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);
   //求是星期几
   mydate= myFormatter.parse("2001-1-1");
   SimpleDateFormat formatter4 = new SimpleDateFormat("E");
   String mydate3=formatter4.format(mydate);
-----------------------------------------------
 now.getYear();//实际年份减去1900,如果构造函数为Date(2008,2,25)则不减1900,如果构造函数为Date(17009456745)或者setTime(17009456745)还减1900
 now.getMonth();//实际月份减去1,如果构造函数为Date(2008,2,25)则不减1,如果构造函数为Date(17009456745)或者setTime(17009456745)还减1900
 now.getDay();//*,原来是取星期,不知sun公司是咋想的,脑袋进水了。
 now.getDate();//这才是取1~31之间的日
 now.getHours();//24进制的小时
 now.getMinutes();//分
 now.getSeconds();//秒
 now.getTime();//返回1970年1月1日00:00:00起至今的毫秒数
 now.setTime(long time);//真实日期为1970年1月1日午夜+time毫秒
*************************************
日历类型的子类GregorianCalendar类型
构造函数GregorianCalendar(int year, int month, int date) ,无参数为但前时间
注意月份的表示,一月是0,二月是1,以此类推。因此最好使用单词而不是使用数字来表示月份。父类Calendar使用常量来表示月份:JANUARY, FEBRUARY...
所以1903年12月17日可以写为
GregorianCalendar aaa = new GregorianCalendar(1903, Calendar.DECEMBER, 17)
GregorianCalendar aaa = new GregorianCalendar(1903, 11, 17); 
---------------------------------------
import java.util.Date;
import java.text.DateFormat;
import java.util.GregorianCalendar;
public class a {
public static void main(String[] args) {
  DateFormat df =  DateFormat.getDateInstance(DateFormat.FULL);
  GregorianCalendar gca = new GregorianCalendar();
  //getTime()方法是将GregorianCalendar对象转换为Date对象
  gca.setTime(new Date());
  System.out.println("系统时间: " +df.format(gca.getTime()));
  //set 方法能够让我们通过简单的设置星期中的哪一天这个域来将我们的时间调整为星期五.注意到这里我们使用了常量 DAY_OF_WEEK 和 FRIDAY来增强代码的可读性.
  //如果当前为星期五时间不变
  gca.set(GregorianCalendar.DAY_OF_WEEK, GregorianCalendar.FRIDAY);
  System.out.println("下一个星期五: " +  df.format(gca.getTime()));
  //add 方法让我们能够在日期上加上数值. 
  gca.add(GregorianCalendar.DAY_OF_MONTH, 8);
  System.out.println("再加8天: " +  df.format(gca.getTime()));
  //get方法取对象中的一部分
  int i =  gca.get(GregorianCalendar.DAY_OF_MONTH);
  System.out.println(i);
}}
***************************************
Locale类:(java.util.Locale)
-----------------------------------
import java.util.Locale;
public class a {
 public static void main(String[] args) {
  Locale localeEN = new Locale("en", "US");
  //另一实例化方法=locale.ENGLISH;
  System.out.println("Display Name: " +localeEN.getDisplayName());
  System.out.println("Country: " + localeEN.getCountry());
  System.out.println("Language: " + localeEN.getLanguage());
  Locale localeFR = new Locale("fr", "FR");
  System.out.println("\nDisplay Name: " +localeFR.getDisplayName());
  System.out.println("Country: " + localeFR.getCountry());
  System.out.println("Language: " + localeFR.getLanguage());
  // 用三种语言显示本机语言、英语、法语
  System.out.println("用本语显示DisplayName: "+ localeEN.getDisplayName());
  System.out.println("用英语显示DisplayName:"+   localeEN.getDisplayName(localeEN ));
  System.out.println("用法语显示DisplayName:"+   localeEN.getDisplayName(localeFR ));
 }
}
*****************************************************
把Date以不同地域的格式显示:java.text.DateFormat
getDateTimeInstance()的前两个参数分别代表日期风格和时间风格,取值为SHORT, MEDIUM, LONG, 和 FULL
getDateInstance()方法:Java还提供了几个选择日期格式,你可以通过使用重载的getDateInstance(int style)获得。出于方便的原因,DateFormat提供了几种预置的常量,你可以使用这些常量参数SHORT, MEDIUM, LONG, 和FULL
-----------------------------------------------
import java.util.Locale;
import java.text.DateFormat;
import java.util.Date;
public class a {
  public static void main(String[] args) {     
    Date now=new Date();
    Locale localeCN=Locale.CHINA;
    DateFormat df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL,localeCN);
    System.out.println(df.format(now));
   //结果为2004年5月17日 星期一 下午16时38分32秒 CST  
}}
******************************************************
时区 java.util.TimeZone
--------------------------------------------------------
import java.util.TimeZone;
public class a {
  public static void main(String[] args) {
  // 系统时区
  TimeZone timeZoneFL = TimeZone.getDefault();
  System.out.println("\n" + timeZoneFL.getDisplayName());
  System.out.println("与GMT相差的微秒数: " + timeZoneFL.getRawOffset());
  System.out.println("Uses daylight saving: " + timeZoneFL.useDaylightTime());
  //通过“时区字符串ID”指定时区
  TimeZone timeZoneLondon = TimeZone.getTimeZone("Europe/London");
  System.out.println("\n" + timeZoneLondon.getDisplayName());
  System.out.println("与GMT相差的微秒数: " + timeZoneLondon.getRawOffset());
  System.out.println("采用夏令时: " + timeZoneLondon.useDaylightTime());
  }}
-------------------------------------------------------
显示结果:
中国标准时间
与GMT相差的微秒数:
Uses daylight saving:false;
格林威治时间
与GMT相差的微秒数:
采用夏令时: true
********************************************************
显示不同时区的时间  df.setTimeZone(TimeZone kkk)
----------------------------------------------------
public class a {
  public static void main(String[] args) {
    Date now=new Date();
    DateFormat df=DateFormat.getDateTimeInstance(DateFormat.FULL,DateFormat.FULL);
    TimeZone timezoneCH=TimeZone.getTimeZone("China/BeiJing");
    df.setTimeZone(timezoneCH);
    System.out.println("北京时间"+df.format(now));
    TimeZone timezoneFR=TimeZone.getTimeZone("Europe/Paris");
    df.setTimeZone(timezoneFR);
    System.out.println("巴黎时间"+df.format(now));    
  }}
-----------------------------------------------------
结果如下:
北京时间2004年5月17日 星期一 上午09时31分34秒 GMT
巴黎时间2004年5月17日 星期一 上午11时31分34秒 CEST
分享到:
评论

相关推荐

    java 日期操作汇总

    java 日期操作汇总包含date calendar 相互转换

    java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒

    这篇博客文章“java 日期操作工具类:包括计算两个时间相差距离多少天多少小时多少分多少秒”提供了一个实用的工具类,帮助开发者更方便地处理日期和时间差异。下面将详细解释这个工具类中的关键知识点。 1. **Java...

    JAVA日期操作汇总

    ### JAVA日期操作汇总 本文将对Java中的日期操作进行详细解析,主要涵盖以下几个方面: 1. 计算某个月份的最大天数; 2. `Calendar`与`Date`之间的转换; 3. 日期格式化; 4. 获取指定日期所在的周序号及设置某...

    Java日期操作接口

    本篇文章将详细探讨Java中的日期操作接口,特别是围绕"Java日期操作接口"这个主题,以及与之相关的`DateFilter.java`文件。 首先,Java中最基础的日期类是`java.util.Date`。这个类自Java 1.0起就存在,但它的设计...

    java日期操作大全

    以下是对给定内容中涉及的Java日期操作进行的详细说明: 1. **获取指定月份的第一天**: 使用`java.util.Calendar`类可以方便地获取指定日期所在月份的第一天。首先,将输入的日期字符串转换为`java.util.Date`...

    java日期操作类

    java日期操作类 操作java日期 替换simplatedateformate

    JAVA日期操作类详细讲解

    本篇内容将深入讲解Java中的日期操作类,这对于Java初学者来说是非常重要的知识点。 首先,我们要了解Java中的基础日期类`java.util.Date`。这个类在早期的Java版本中被广泛使用,但其API设计存在一些问题,例如不...

    java日期操作.

    本篇文章将详细探讨Java中的日期操作。 首先,Java标准库中最基础的日期类是`java.util.Date`。这个类可以表示从1970年1月1日00:00:00 UTC(协调世界时)到现在的毫秒数。创建`Date`对象后,你可以通过`System....

    java日期类型操作工具类

    java日期类型操作工具类

    java 日期操作工具类

    全面的日期开发工具类,对日期进行各种转换,应用于大部分项目的开发需求。

    java 日期操作

    日期的计算,图书馆图书超期天数,日期加减法、date与String的转换

    java所有可能的日期操作封装

    Java日期操作是编程中常见的需求,它涉及到对时间的处理、日期格式化、日期比较以及时间戳转换等。Java提供了一系列强大的API来处理日期和时间,主要包括`java.util.Date`、`java.util.Calendar`、`java.text....

    java日期操作工具类(获取指定日期、日期转换、相隔天数)

    Java日期操作是编程中常见的需求,特别是在处理时间相关的业务逻辑时。在Java中,我们可以使用`java.util.Date`、`java.util.Calendar`以及`java.text.SimpleDateFormat`等类来完成日期和时间的操作。以下是对给定...

    Java日期操作类常见用法示例

    Java日期操作类常见用法示例 Java日期操作类是Java语言中用于处理日期和时间的类库,主要包括java.time包下的LocalDateTime、LocalDate、LocalTime等类。这些类提供了丰富的方法来处理日期和时间,包括获取当前日期...

    Java获取各种日期的函数(方法).docx

    Java日期操作函数详解 Java语言中日期操作函数是非常重要的一部分,日期操作函数可以帮助开发者快速获取和处理日期相关的信息。本文将对Java日期操作函数进行详细的介绍和分析。 1. 日期操作函数的基本概念 在...

    Java日期操作方法工具类实例【包含日期比较大小,相加减,判断,验证,获取年份等】

    Java 日期操作方法工具类实例 Java 日期操作方法工具类实例是 Java 语言中对日期进行操作的工具类,提供了日期比较大小、相加减、判断、验证、获取年份等多种常见操作。该工具类主要用于解决 Java 日期操作中的一些...

    java日期时间操作函数代码

    如果这个文件包含了代码示例,你可以打开查看具体实现,进一步学习和理解Java日期时间操作的细节。 总之,理解和熟练掌握Java的日期时间操作对于开发人员来说至关重要,无论是在处理用户输入、记录日志还是进行复杂...

    Java中常见的日期操作(取值、转换、加减、比较)

    在Java编程中,日期操作是常见且至关重要的任务,尤其在处理日志记录、数据分析、用户界面显示等场景。本文将深入探讨Java中常见的日期操作,包括日期取值、...希望这篇文章能帮助到那些对Java日期操作感兴趣的开发者。

Global site tag (gtag.js) - Google Analytics