精华内容
下载资源
问答
  • Java 日期类

    千次阅读 2010-07-21 16:46:00
    //新建日期对象  int year=c.get(Calendar.YEAR);//获取年份  int month=c.get(Calendar.MONTH);//获取月份  int day=c.get(Calendar.DATE);//获取日期  int minute=c.get(Calendar....

    取得当前年月日
    Calendar  c=new  GregorianCalendar();//新建日期对象 
    int  year=c.get(Calendar.YEAR);//获取年份 
    int  month=c.get(Calendar.MONTH);//获取月份 
    int  day=c.get(Calendar.DATE);//获取日期 
    int  minute=c.get(Calendar.MINUTE);//分 
    int  hour=c.get(Calendar.HOUR);//小时 
    int  second=c.get(Calendar.SECOND);//秒 

     

    在学习java的时候往往很多教材都忽视了这个问题,日期处理其实在挺重要的一个知识点。遇到几个朋友反复问到。就给写出来吧。。希望有遇到这个问题的可以参考一下。。

    其实在java的日期处理,大多数也都是在数据库开发应用的时候遇到的。主要就是下面的两个类吧。

    java.util.Date
         |
    java.sql.Date    它的很多日期处理方法都过时了。被Calendar类中的方法替换

    1.SimpleDateFormat类

    现在使用java.text.SimpleDateFormat类中的方法。
     Date d = rs.getDate("pdate");
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");
     System.out.println(sdf.format(d));


    2.Calendar(日历)
    是一个抽象类,把时间转换成属性值
    实例化取当前时间:
     Calendar new = Calendar.getInstanse();

    取属性值:
     Calendar.get(Calendar.MONTH); //取月份

    把相要的Date转换成Calendar
     Calendar c = Calendar.getInstance();
     c.setTime(d); //转换
     System.out.println(Calendar.MONTH);

    3.Timestamp(时间戳)取时间
    有getTimestamp()方法

    Timestamp ts = rs.getTimestamp("pdate");
    SimpleDateFormat sdf = new SimepleDateFormat("HH:mm:ss");
    System.out.println(sdf.format(d));

    差不多这些就可以解决大部分的问题了。当然处理更多更复杂的。。那你就得去JAVA API Document中去参考了。也差不多那几类吧。。多看看吧。。

    --------------------------


    Java 语言的Calendar(日历),Date(日期), 和DateFormat(日期格式)组成了Java标准的一个基本但是非常重要的部分. 日期是商业逻辑计算一个关键的部分. 所有的开发者都应该能够计算未

    来的日期, 定制日期的显示格式, 并将文本数据解析成日期对象. 我们写了两篇文章, 这是第一篇, 我们将大概的学习日期, 日期格式, 日期的解析和日期的计算.

    我们将讨论下面的类:

    1、具体类(和抽象类相对)java.util.Date
    2、抽象类java.text.DateFormat 和它的一个具体子类,java.text.SimpleDateFormat
    3、抽象类java.util.Calendar 和它的一个具体子类,java.util.GregorianCalendar

    具体类可以被实例化, 但是抽象类却不能. 你首先必须实现抽象类的一个具体子类.

    Date 类从Java 开发包(JDK) 1.0 就开始进化, 当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年. 这些方法现在遭到了批评并且已经被转移到了

    Calendar类里去了, 我们将在本文中进一步讨论它. 这种改进旨在更好的处理日期数据的国际化格式. 就象在JDK 1.1中一样, Date 类实际上只是一个包裹类, 它包含的是一个长整型数据,

    表示的是从GMT(格林尼治标准时间)1970年, 1 月 1日00:00:00这一刻之前或者是之后经历的毫秒数.

    一、创建一个日期对象

    让我们看一个使用系统的当前日期和时间创建一个日期对象并返回一个长整数的简单例子. 这个时间通常被称为Java 虚拟机(JVM)主机环境的系统时间.
    //------------------------------------------------------
    import java.util.Date;

    public class DateExample1
    {
    public static void main(String[] args)
    {
    // Get the system date/time
    Date date = new Date();

    System.out.println(date.getTime());
    }
    }
    //------------------------------------------------------

    在星期六, 2001年9月29日, 下午大约是6:50的样子, 上面的例子在系统输出设备上显示的结果是 1001803809710. 在这个例子中,值得注意的是我们使用了Date 构造函数创建一个日期对象,

    这个构造函数没有接受任何参数. 而这个构造函数在内部使用了System.currentTimeMillis() 方法来从系统获取日期.

    那么, 现在我们已经知道了如何获取从1970年1月1日开始经历的毫秒数了. 我们如何才能以一种用户明白的格式来显示这个日期呢? 在这里类java.text.SimpleDateFormat 和它的抽象基类

    java.text.DateFormat 就派得上用场了.

    二、日期数据的定制格式

    假如我们希望定制日期数据的格式, 比方星期六-9月-29日-2001年. 下面的例子展示了如何完成这个工作:

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

    public class DateExample2
    {

    public static void main(String[] args)
    {

    SimpleDateFormat bartDateFormat =
    new SimpleDateFormat("EEEE-MMMM-dd-yyyy");

    Date date = new Date();

    System.out.println(bartDateFormat.format(date));
    }
    }
    //------------------------------------------------------

    只要通过向SimpleDateFormat 的构造函数传递格式字符串"EEE-MMMM-dd-yyyy", 我们就能够指明自己想要的格式. 你应该可以看见, 格式字符串中的ASCII 字符告诉格式化函数下面显示日期

    数据的哪一个部分. EEEE是星期, MMMM是月, dd是日, yyyy是年. 字符的个数决定了日期是如何格式化的.传递"EE-MM-dd-yy"会显示 Sat-09-29-01. 请察看Sun 公司的Web 站点获取日期格式

    化选项的完整的指示.

    三、将文本数据解析成日期对象

    假设我们有一个文本字符串包含了一个格式化了的日期对象, 而我们希望解析这个字符串并从文本日期数据创建一个日期对象. 我们将再次以格式化字符串"MM-dd-yyyy" 调用

    SimpleDateFormat类, 但是这一次, 我们使用格式化解析而不是生成一个文本日期数据. 我们的例子, 显示在下面, 将解析文本字符串"9-29-2001"并创建一个值为001736000000 的日期对象.

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

    public class DateExample3
    {

    public static void main(String[] args)
    {
    // Create a date formatter that can parse dates of
    // the form MM-dd-yyyy.
    SimpleDateFormat bartDateFormat =
    new SimpleDateFormat("MM-dd-yyyy");

    // Create a string containing a text date to be parsed.
    String dateStringToParse = "9-29-2001";

    try {
    // Parse the text version of the date.
    // We have to perform the parse method in a
    // try-catch construct in case dateStringToParse
    // does not contain a date in the format we are expecting.
    Date date = bartDateFormat.parse(dateStringToParse);

    // Now send the parsed date as a long value
    // to the system output.
    System.out.println(date.getTime());
    }
    catch (Exception ex) {
    System.out.println(ex.getMessage());
    }
    }
    }
    //------------------------------------------------------

    四、使用标准的日期格式化过程

    既然我们已经可以生成和解析定制的日期格式了, 让我们来看一看如何使用内建的格式化过程. 方法 DateFormat.getDateTimeInstance() 让我们得以用几种不同的方法获得标准的日期格式

    化过程. 在下面的例子中, 我们获取了四个内建的日期格式化过程. 它们包括一个短的, 中等的, 长的, 和完整的日期格式.

    //------------------------------------------------------
    import java.text.DateFormat;
    import java.util.Date;

    public class DateExample4
    {

    public static void main(String[] args)
    {
    Date date = new Date();

    DateFormat shortDateFormat =
    DateFormat.getDateTimeInstance(
    DateFormat.SHORT,
    DateFormat.SHORT);

    DateFormat mediumDateFormat =
    DateFormat.getDateTimeInstance(
    DateFormat.MEDIUM,
    DateFormat.MEDIUM);

    DateFormat longDateFormat =
    DateFormat.getDateTimeInstance(
    DateFormat.LONG,
    DateFormat.LONG);

    DateFormat fullDateFormat =
    DateFormat.getDateTimeInstance(
    DateFormat.FULL,
    DateFormat.FULL);

    System.out.println(shortDateFormat.format(date));
    System.out.println(mediumDateFormat.format(date));
    System.out.println(longDateFormat.format(date));
    System.out.println(fullDateFormat.format(date));
    }
    }
    //------------------------------------------------------

    注意我们在对 getDateTimeInstance的每次调用中都传递了两个值. 第一个参数是日期风格, 而第二个参数是时间风格. 它们都是基本数据类型int(整型). 考虑到可读性, 我们使用了

    DateFormat 类提供的常量: SHORT, MEDIUM, LONG, 和 FULL. 要知道获取时间和日期格式化过程的更多的方法和选项, 请看Sun 公司Web 站点上的解释.

    运行我们的例子程序的时候, 它将向标准输出设备输出下面的内容:
    9/29/01 8:44 PM
    Sep 29, 2001 8:44:45 PM
    September 29, 2001 8:44:45 PM EDT
    Saturday, September 29, 2001 8:44:45 PM EDT

    五、Calendar 类

    我们现在已经能够格式化并创建一个日期对象了, 但是我们如何才能设置和获取日期数据的特定部分呢, 比如说小时, 日, 或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案

    是使用Calendar 类. 就如我们前面提到的那样, Calendar 类中的方法替代了Date 类中被人唾骂的方法.

    假设你想要设置, 获取, 和操纵一个日期对象的各个部分, 比方一个月的一天或者是一个星期的一天. 为了演示这个过程, 我们将使用具体的子类 java.util.GregorianCalendar. 考虑下面

    的例子, 它计算得到下面的第十个星期五是13号.

    //------------------------------------------------------
    import java.util.GregorianCalendar;
    import java.util.Date;
    import java.text.DateFormat;

    public class DateExample5
    {

    public static void main(String[] args)
    {
    DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.FULL);

    // Create our Gregorian Calendar.
    GregorianCalendar cal = new GregorianCalendar();

    // Set the date and time of our calendar
    // to the system&s date and time
    cal.setTime(new Date());

    System.out.println("System Date: " +
    dateFormat.format(cal.getTime()));

    // Set the day of week to FRIDAY
    cal.set(GregorianCalendar.DAY_OF_WEEK,
    GregorianCalendar.FRIDAY);
    System.out.println("After Setting Day of Week to Friday: " +
    dateFormat.format(cal.getTime()));

    int friday13Counter = 0;

    while (friday13Counter <= 10)
    {

    // Go to the next Friday by adding 7 days.
    cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

    // If the day of month is 13 we have
    // another Friday the 13th.
    if (cal.get(GregorianCalendar.DAY_OF_MONTH) == 13)
    {
    friday13Counter++;
    System.out.println(dateFormat.format(cal.getTime()));
    }
    }
    }
    }
    //------------------------------------------------------
    关键字: java处理日期时间

    JAVA处理日期时间常用方法:

    1.java.util.Calendar
    Calendar 类是一个抽象类,它为特定瞬间与一组诸如 YEAR、MONTH、DAY_OF_MONTH、HOUR 等 日历字段之间的转换提供了一些方法,并为操作日历字段(例如获得下星期的日期)提供了一些方法。瞬间可用毫秒值来表示,它是距历元(即格林威治标准时间 1970 年 1 月 1 日的 00:00:00.000,格里高利历)的偏移量。

    例:
    Calendar cal = Calendar.getInstance();//使用默认时区和语言环境获得一个日历。
    cal.add(Calendar.DAY_OF_MONTH, -1);//取当前日期的前一天.

    cal.add(Calendar.DAY_OF_MONTH, +1);//取当前日期的后一天.

    //通过格式化输出日期
    java.text.SimpleDateFormat format = new java.text.SimpleDateFormat("yyyy-MM-dd");

    System.out.println("Today is:"+format.format(Calendar.getInstance().getTime()));

    System.out.println("yesterday is:"+format.format(cal.getTime()));

    得到2007-12-25日期:

    Calendar calendar = new GregorianCalendar(2007, 11, 25,0,0,0);
    Date date = calendar.getTime();
    System.out.println("2007 Christmas is:"+format.format(date));

    java月份是从0-11,月份设置时要减1

    ---------------------------------------

    在这个例子中我们作了有趣的函数调用:
    cal.set(GregorianCalendar.DAY_OF_WEEK,
    GregorianCalendar.FRIDAY);

    和:
    cal.add(GregorianCalendar.DAY_OF_MONTH, 7);

    set 方法能够让我们通过简单的设置星期中的哪一天这个域来将我们的时间调整为星期五. 注意到这里我们使用了常量 DAY_OF_WEEK 和 FRIDAY来增强代码的可读性. add 方法让我们能够在

    日期上加上数值. 润年的所有复杂的计算都由这个方法自动处理.

    我们这个例子的输出结果是:
    System Date: Saturday, September 29, 2001
    当我们将它设置成星期五以后就成了: Friday, September 28, 2001
    Friday, September 13, 2002
    Friday, December 13, 2002
    Friday, June 13, 2003
    Friday, February 13, 2004
    Friday, August 13, 2004
    Friday, May 13, 2005
    Friday, January 13, 2006
    Friday, October 13, 2006
    Friday, April 13, 2007
    Friday, July 13, 2007
    Friday, June 13, 2008

    六、时间掌握在你的手里

    有了这些Date 和Calendar 类的例子, 你应该能够使用 java.util.Date, java.text.SimpleDateFormat, 和 java.util.GregorianCalendar 创建许多方法了.


    =---------------------

     1.计算某一月份的最大天数

    Calendar time=Calendar.getInstance();
    time.clear();
    time.set(Calendar.YEAR,year); //year 为 int
    time.set(Calendar.MONTH,i-1);//注意,Calendar对象默认一月为0          
    int day=time.getActualMaximum(Calendar.DAY_OF_MONTH);//本月份的天数
    注:在使用set方法之前,必须先clear一下,否则很多信息会继承自系统当前时间

    2.Calendar和Date的转化

    (1) Calendar转化为Date
    Calendar cal=Calendar.getInstance();
    Date date=cal.getTime();

    (2) Date转化为Calendar
    Date date=new Date();
    Calendar cal=Calendar.getInstance();
    cal.setTime(date);

    3.格式化输出日期时间 (这个用的比较多)

    Date date=new Date();
    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
    String time=df.format(date);
    System.out.println(time);

    4.计算一年中的第几星期

    (1)计算某一天是一年中的第几星期
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH,;
    cal.set(Calendar.DAY_OF_MONTH, 3);
    int weekno=cal.get(Calendar.WEEK_OF_YEAR);

    (2)计算一年中的第几星期是几号
    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.WEEK_OF_YEAR, 1);
    cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
    System.out.println(df.format(cal.getTime()));
    输出:
    2006-01-02

    5.add()和roll()的用法(不太常用)

    (1)add()方法
    SimpleDateFormat df=new SimpleDateFormat("yyyy-MM-dd");
    Calendar cal=Calendar.getInstance();
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH,;
    cal.set(Calendar.DAY_OF_MONTH, 3);
    cal.add(Calendar.DATE, -4);
    Date date=cal.getTime();
    System.out.println(df.format(date));
    cal.add(Calendar.DATE, 4);
    date=cal.getTime();
    System.out.println(df.format(date));
    输出:
        2006-08-30
        2006-09-03
    (2)roll方法
    cal.set(Calendar.YEAR, 2006);
    cal.set(Calendar.MONTH,;
    cal.set(Calendar.DAY_OF_MONTH, 3);
    cal.roll(Calendar.DATE, -4);
    date=cal.getTime();
    System.out.println(df.format(date));
    cal.roll(Calendar.DATE, 4);
    date=cal.getTime();
    System.out.println(df.format(date));
    输出:
        2006-09-29
        2006-09-03
    可见,roll()方法在本月内循环,一般使用add()方法;

    6.计算两个任意时间中间的间隔天数(这个比较常用)
    (1)传进Calendar对象
        public int getIntervalDays(Calendar startday,Calendar endday)...{      
            if(startday.after(endday))...{
                Calendar cal=startday;
                startday=endday;
                endday=cal;
            }   
            long sl=startday.getTimeInMillis();
            long el=endday.getTimeInMillis();
          
            long ei=el-sl;          
            return (int)(ei/(1000*60*60*24));
        }
    (2)传进Date对象

        public int getIntervalDays(Date startday,Date endday)...{       
            if(startday.after(endday))...{
                Date cal=startday;
                startday=endday;
                endday=cal;
            }       
            long sl=startday.getTime();
            long el=endday.getTime();      
            long ei=el-sl;          
            return (int)(ei/(1000*60*60*24));
        }
    (3)改进精确计算相隔天数的方法
        public int getDaysBetween (Calendar d1, Calendar d2) ...{
            if (d1.after(d2)) ...{
                java.util.Calendar swap = d1;
                d1 = d2;
                d2 = swap;
            }
            int days = d2.get(Calendar.DAY_OF_YEAR) - d1.get(Calendar.DAY_OF_YEAR);
            int y2 = d2.get(Calendar.YEAR);
            if (d1.get(Calendar.YEAR) != y2) ...{
                d1 = (Calendar) d1.clone();
                do ...{
                    days += d1.getActualMaximum(Calendar.DAY_OF_YEAR);//得到当年的实际天数
                    d1.add(Calendar.YEAR, 1);
                } while (d1.get(Calendar.YEAR) != y2);
            }
            return days;
        }
    注意:通过上面的方法可以衍生出求任何时间,如要查出邮箱三周之内收到的邮件(得到当前系统时间-再得到三周前时间)用收件的时间去匹配 最好装化成 long去比较
    如: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);

    7. String 和 Date ,Long 之间相互转换 (最常用)

    字符串转化成时间类型(字符串可以是任意类型,只要和SimpleDateFormat中的格式一致即可)
    通常我们取时间跨度的时候,会substring出具体时间--long-比较

    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");
    long dvalue=d.getTime();
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    String mDateTime1=formatter.format(d);

    8. 通过时间求时间

    年月周求日期
    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);

    9. java 和 具体的数据库结合

    在开发web应用中,针对不同的数据库日期类型,我们需要在我们的程序中对日期类型做各种不同的转换。若对应数据库数据是oracle的Date类型,即只需要年月日的,可以选择使用

    java.sql.Date类型,若对应的是MSsqlserver 数据库的DateTime类型,即需要年月日时分秒的,选择java.sql.Timestamp类型
    你可以使用dateFormat定义时间日期的格式,转一个字符串即可

    class Datetest{
    *method 将字符串类型的日期转换为一个timestamp(时间戳记java.sql.Timestamp)
    *@param dateString 需要转换为timestamp的字符串
    *@return dataTime timestamp

    public final static java.sql.Timestamp string2Time(String dateString)
    throws java.text.ParseException {
    DateFormat dateFormat;
    dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss.SSS", Locale.ENGLISH);//设定格式
    //dateFormat = new SimpleDateFormat("yyyy-MM-dd kk:mm:ss", Locale.ENGLISH);
    dateFormat.setLenient(false);
    java.util.Date timeDate = dateFormat.parse(dateString);//util类型
    java.sql.Timestamp dateTime = new java.sql.Timestamp(timeDate.getTime());//Timestamp类型,timeDate.getTime()返回一个long型
    return dateTime;
    }

    *method 将字符串类型的日期转换为一个Date(java.sql.Date)
    *@param dateString 需要转换为Date的字符串
    *@return dataTime Date

    public final static java.sql.Date string2Date(String dateString)
    throws java.lang.Exception {
    DateFormat dateFormat;
    dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    dateFormat.setLenient(false);
    java.util.Date timeDate = dateFormat.parse(dateString);//util类型
    java.sql.Date dateTime = new java.sql.Date(timeDate.getTime());//sql类型
    return dateTime;
    }

    public static void main(String[] args){
    Date da = new Date();
    注意:这个地方da.getTime()得到的是一个long型的值
    System.out.println(da.getTime());

    由日期date转换为timestamp

    第一种方法:使用new Timestamp(long)
    Timestamp t = new Timestamp(new Date().getTime());
    System.out.println(t);

    第二种方法:使用Timestamp(int year,int month,int date,int hour,int minute,int second,int nano)
    Timestamp tt = new Timestamp(Calendar.getInstance().get(
          Calendar.YEAR) - 1900, Calendar.getInstance().get(
          Calendar.MONTH), Calendar.getInstance().get(
          Calendar.DATE), Calendar.getInstance().get(
          Calendar.HOUR), Calendar.getInstance().get(
          Calendar.MINUTE), Calendar.getInstance().get(
          Calendar.SECOND), 0);
    System.out.println(tt);

    try {
    String sToDate = "2005-8-18";//用于转换成java.sql.Date的字符串
          String sToTimestamp = "2005-8-18 14:21:12.123";//用于转换成java.sql.Timestamp的字符串
          Date date1 = string2Date(sToDate);
          Timestamp date2 = string2Time(sToTimestamp);
    System.out.println("Date:"+date1.toString());//结果显示
    System.out.println("Timestamp:"+date2.toString());//结果显示
    }catch(Exception e) {
    e.printStackTrace();
    }
    }
    }

     

     

     

    展开全文
  • 利用java日期类生成数据仓库维度表

    千次阅读 2014-10-11 20:19:54
    整理java日期类,利用其在数据仓库日期维度表;

    利用java日期类生成数据仓库维度表

    Date类:

    最基础的日期时间类,返回一个相对日期的毫秒数。精确到毫秒,但不支持日期的国际化和分时区显示。Date 类从Java 开发包(JDK)1.0 就开始进化,当时它只包含了几个取得或者设置一个日期数据的各个部分的方法, 比如说月, 日, 和年。 这些方法现在遭到了批评并且已经被转移到了Calendar类里去了,这种改进旨在更好的处理日期数据的国际化格式。

     

    Calender类:

    相对于Date更加强大的时间类,是抽象类,提供了常规的日期修改功能和国际化支持。

     

    GregorianCalendar类:

    提供处理日期的方法,用于计算日期,是Calendar类的子类,有用的是有个判断闰年的方法。

     

    DateFormat类:

    可以接受字符串输入、输出,提供了将日期/时间信息进行格式化处理的功能。

     

    SimpleDateFormat类:

    功能更强大的日期时间格式化类,自定义格式化日期和时间。

     

    java.util.Locale类:

    描述特定的地理、政治、文化上的地区,Locale对象主要封装了“地区”和“语言种类”两方面 .

     

     下面用代码来模拟生成日期维度表的一些字段值:

    import java.text.SimpleDateFormat;
    
    import java.util.Calendar;
    
    import java.util.Date;
    
    import java.util.GregorianCalendar;
    
    import java.util.Locale;
    
     
    
    public class DateUtil {
    
             Localeloc = new Locale("zh", "CN");
    
    //      Localeloc = new Locale("en", "CN");
    
             Calendarcalendar = new GregorianCalendar(loc);
    
            
    
             publicvoid init(){
    
                       calendar.set(2014,9, 10);
    
             }
    
            
    
             publicDate add(int day){
    
                       calendar.add(Calendar.DAY_OF_MONTH,day);
    
                       returncalendar.getTime();
    
             }
    
            
    
             publicvoid showDate(Date date){
    
                       p("TimeInMillis",calendar.getTimeInMillis()+"");
    
                      
    
                       p("ShortDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.SHORT,loc)
    
                                         .format(date));
    
                       p("MEDIUMDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.MEDIUM,loc)
    
                                         .format(date));
    
                       p("LONGDate",java.text.DateFormat.getDateInstance(java.text.DateFormat.LONG, loc)
    
                                         .format(date));
    
                       p("LONGFULL",java.text.DateFormat.getDateInstance(java.text.DateFormat.FULL, loc)
    
                                         .format(date));
    
                      
    
                       SimpleDateFormatsdf = new SimpleDateFormat("D",loc);
    
                       p("dayin year",sdf.format(date));
    
                       sdf.applyPattern("d");
    
                       p("dayin month",sdf.format(date));
    
                       sdf.applyPattern("EEEE");
    
                       p("dayname",sdf.format(date));
    
                       sdf.applyPattern("E");
    
                       p("dayabbreviation",sdf.format(date));
    
                      
    
                       sdf.applyPattern("ww");
    
                       p("weekin year",sdf.format(date));
    
                       sdf.applyPattern("W");
    
                       p("weekin month",sdf.format(date));
    
                      
    
                       sdf.applyPattern("MM");
    
                      String month = sdf.format(date);
    
                       p("monthnumber",sdf.format(date));
    
                       sdf.applyPattern("MMMM");
    
                       p("monthname",sdf.format(date));
    
                       sdf.applyPattern("MMM");
    
                       p("monthabbreviation",sdf.format(date));
    
                      
    
                       sdf.applyPattern("yy");
    
                       p("year2",sdf.format(date));  
    
                       sdf.applyPattern("yyyy");
    
                       p("year4",sdf.format(date));
    
                      
    
                       intquarter_number = (int)Math.ceil( (Integer.parseInt(month) /3.0));
    
                       p("quertername","Q"+quarter_number);
    
                      
    
                       intfirst_day_of_week = calendar.getFirstDayOfWeek();
    
                       p("is_first_day_of_week",firstWeekDay(first_day_of_week));
    
             }
    
            
    
             publicvoid p(String desc,String date){
    
                       System.out.println(desc+ " : " + date);
    
             }
    
            
    
             publicvoid calAndShow(){
    
                       for(int i = 0; i < 3; i++) {
    
                                init();
    
                                showDate(add(i));
    
                                System.out.println();
    
                       }
    
             }
    
            
    
             publicString firstWeekDay(int first){
    
                       returnfirst == calendar.get(Calendar.DAY_OF_WEEK) ? "yes" : "no";
    
             }
    
            
    
             publicstatic void main(String[] args) {
    
                       DateUtild = new DateUtil();
    
                       d.calAndShow();
    
                       System.out.println(Math.ceil(11.0/3.0));
    
             }
    
    }
     
    展开全文
  • java日期类Calendar问题

    2014-04-21 13:28:18
    做的一个塞浦路斯(地中海岛国)的项目,该国实行冬令时(+2)和夏令时(+3),应用服务器linux通过date命令,查询出来已是夏令时,但是通过JDK的Calendar.getTime()方法得到的依然是冬令时,两者相差的时间为1小时,...
  • Java日期类(Date)

    千次阅读 2018-12-02 01:20:19
    Java中的时间 java中的时间使用标准类库的Date类型来表示,是用距离某一个固定时间点的毫秒数表达的一个特定的时间点。 固定时间点叫纪元(epoch),是UTC时间 1970年1月1日 00:00:00 ,UTC(Universal Time ...

    Java中的时间

    java中的时间使用标准类库的Date类型来表示,是用距离某一个固定时间点的毫秒数表达的一个特定的时间点。
    固定时间点叫纪元(epoch),是UTC时间 1970年1月1日 00:00:00 ,UTC(Universal Time Coordinated世界调整时间)与GMT(Greenwich Mean Time格林威治时间)一样,是一种具有实际目的的科学标准时间。

    Date类型简介

    java.util.Date类封装了日期和时间信息。
    Date 是表示时间实例的一个类,它的精度为毫秒。
    Date类的大多数用于进行时间分量计算的方法已经被Calendar取代。

    Date类的常用构造器

    在这里插入图片描述

    Date类的常用方法

    SimpleDateFormat

    SimpleDateFormat是一个具体的类,用于格式化和解析日期。 它允许格式化(日期 文本),解析(文本 日期)和规范化。

    作用:
    可以按照指定格式将字符串解析成日期,也可以将日期转换成字符串、

    构造器及常用方法:
    在这里插入图片描述
    在这里插入图片描述

    日期模式匹配字符

    字符 含义 案例
    y 年 yyyy年—2018年;yy-18年
    M 月 MM月—05月;M月—5月
    d 日 dd日—06日;d日—6日
    E 星期 E-星期日(Sun)
    a 上下午(AM、PM) a—下午(PM)
    H 24小时制 a h时--------下午 10时
    HH:mm:ss------12:21:34
    hh(a):mm:ss------12(PM):21:34
    h 12小时制
    m 分钟
    s 秒

    year 年份由一个整型数(Integer)来表示 — 例 从1900 开始, 如果整数为20就代表 1920年
    month 月份由一个整型数(Integer)表示 这个整数从0到11; 0是一月份,1是2月份,依次类推… 11代表12月份
    date 天(day of month) 由一个整型数(Integer)表示 这个整数的范围为1~31 在通常情况下。
    hour 小时 由一个 0~23 范围的整数(Integer) 来表示, 0点到1点用0表示,依次类推…
    minute 分钟由一个 0~59 范围的整数(Integer)表示

    展开全文
  • Java日期时间

    千次阅读 2014-11-28 10:56:26
    Java日期时间 Date Java提供的Date和Calendar用于处理日期和时间的,包括创建日期,时间对象,获取系统当前日期,时间 等操作。但Date无法实现国际化,注意,月份与小时都是以0开始,而月份中的天数...
    Java日期时间类
    Date类
    Java提供的Date类和Calendar类用于处理日期和时间的类,包括创建日期,时间对象,获取系统当前日期,时间
    等操作。但Date类无法实现国际化,注意,月份与小时都是以0开始,而月份中的天数则是以1开始,年是以1990
    年开始。
    Date类提供的主要构造器:
    Date()生成一个代表当前日期时间的Date对象,该构造器在底层调用System.currentTimeMillis()获long整数作为日期参数
    Date(long date):根据指定的long型整数来生成一个Date对象,该构造器的参数表示创建的Date对象和GMT 1970-01-01 00:00:00该对象的时间差
    以毫秒作为计时单位。
    方法:
    long getTime():返回该时间对应的long型整数,即从GMT 1970-01-01 00:00:00该对象的时间差,以毫秒作为计时单位
    void setTime(long time):设置该date对象的时间
    实例:
    public class DateTest{
    public static void main(String[] args){
    Date d1=new Date();
    //获取当前时间之后100ms的时间
    Date d2=new Date(System.currentTimeMillis()+100);
    System.out.println(d2);
    System.out.println(d1.compareTo(d2));
    }
    }
    Calendar类
    Java提供了更好的类来处理日期和时间,Calendar是一个抽象类,他表示日历
    Calendar是一个抽象类,它是所以日历类的模版,并提供了一些所有日历通用的方法,同时
    不能使用构造器来创建Calendar类,但他提供了几个静态的getInstance()方法来获取Calendar对象
    这些方法根据TimeZone和Locale类来获取特定的Calendar
    Calendar和Date类可以自由转换
    //创建一个系统默认的Calendar对象
    Calendar calendar=Calendar.getInstance();
    //从Calendar中取出Date对象
    Date date=calendar.getTime();
    //通过Date对象获得对应的Calendar对象
    //因为Calendar和GregorianCalendar没有构造函数可以接收Date对象
    //所以必须先获取一个Calendar实例,然后调用其setTime()方法
    Calendar calendar2=Calendar.getInstance();
    calendar2.setTime(date);
    Calendar提供了大量访问,修改日期和时间的方法:
    void add(int field,int amount):根据日历规则,为给定的字段添加或减去指定的时间量
    void roll(int field,int amount):与add方法相似,区别是加上amount后超过了该字段所能表示的最大
    范围时,也不会向上一个自动进位
    void set(int field,int value):将给定的日历字段设置为给定的值
    void set(int year,int month,int date):将给定的日历字段设置为给定的值
    void get(int field):返回指定日历字段的year,month,date三个字段的值
    public class CalendarTest{
    public static void main(String[] args){
    Calenda calendar=Calendar.getInstance();
    System.out.println(calendar.get(YEAR));
    System.out.println(calendar.get(MONTH));
    //2004-10-23-\ 21:1:2
    System.out.println(calendar.set(2004,10,23,21,1,2));
    System.out.println(calendar.get(Date));
    //将Calendar向后推一年
    System.out.println(calendar.add(YEAR,1));
    //将Calendar向前推8个月
    System.out.println(calendar.roll(MONTH,8));
    }
    }
    //YEAR,MONTH,DATE是Calendar中的静态常量,可以直接使用
    展开全文
  • JAVA日期工具

    千次阅读 2016-07-13 14:39:09
    日期工具,总结了日期通用方法
  • JAVA-日期类

    千次阅读 2017-12-17 11:43:23
    1.Date时间 Date date = new Date(); System.out.println(date); System.out.println(date.toLocaleString());//过时的方法 ...//当前的日期 一个月的第几天 System.out.println(date.getDay());//星期几 返
  • JAVA日期转化工具

    万次阅读 2019-05-29 15:05:03
    package com.chinagas.common.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class DateUtils { public sta...
  • Java程序中与日期相关的包括java.util.Datejava.text.SimpleDateFormatjava.util.calendarjava.util.GregorianCalendar。在这里我们只是简单地介绍Date、SimpleDateFormat和calendar的使用...
  • DataUtils(java日期工具)

    万次阅读 2016-07-13 20:38:17
    DataUtils(java日期工具)介绍在java中队日期类型的处理并不方便,通常都需要借助java.text.SimpleDateFormat来实现日期类型 和字符串类型之间的转换,但是在jdk1.8之后有所改善,jdk1.7以及之前的版本处理日期...
  • JAVA日期时间总结

    千次阅读 多人点赞 2020-08-26 09:46:14
    java中的日期时间前言一.日期时间的包二.Data三.SimpleDateFormat四. Calendar -日历五.新增时间总结 前言 好记性不如烂笔头,日期时间那么花哨不如记下来多看两眼。 提示:以下是本篇文章正文...
  • JAVA字符串转日期日期转字符串 项目开发过程中需要实现日期格式的字符串与日期进行互转,并进行日期的加减操作。 Demo如下: package weiming.lmapp.utils; import java.text.ParseException; import java....
  • java日期类Date和日期的格式化

    万次阅读 2018-03-16 22:30:20
    -----------------java日期类Date和日期的格式化-------------------java.util 类 Datejava.lang.Object java.util.Date所有已实现的接口: Serializable, Cloneable, Comparable&lt;Date&gt; 直接已知...
  • 很多时候,我们采用java来开发相关应用软件的时候,需要自己开发一些工具并把它封装在utils工具中,然后在需要使用的地方直接“.方法”直接调用!本文将介绍两个比较常用的工具,分别是日期工具DateUtils...
  • Calendar的功能要比Date强大很多,可以方便的进行日期的计算,获取日期中的信息时考虑了时区等问题。而且在实现方式上也比Date要复杂一些 1、Calendar对象的创建 Calendar是一个抽象,由于Calendar是...
  • Java中简单日期类和日历类的小结

    千次阅读 2015-01-06 16:26:32
    日期类是用来描述日期的,在java中日期都是用long来保存的(精确到毫秒) 任何日期类都可以用long来相互转换 java中有4种日期类 java.util.Date :常用的类,功能少,能表示时间和日期 java.sql.Date:它是java.util....
  • package com.gcloud.common;import org.apache.http.util.TextUtils...import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.re
  • java工具(四)之实现日期任意跳转

    万次阅读 2015-08-12 16:58:27
    Java实现日期任意跳转 项目开发过程中,需要进行订单提醒日期的设置,主要包括设置每月指定的日期或者指定的天数,代码如下: public static String DateOperation(String type, Date myDate, int num) { String...
  • Java日期类,日历类的使用

    千次阅读 2016-07-13 17:36:37
    JAVA中的日期类为:Date类 日历类:Calendar类 下面,让我们看看Date类的用法吧! import java.util.*; import java.text.*; public class DateTest { public static void main(String[] args) { Date ...
  • Java实体类日期转换

    千次阅读 2019-10-24 20:14:22
    class Person{ @DateTimeFormat(pattern = “yyyy-MM-dd”) //前台传数据到后台 @JsonFormat(pattern = “yyyy-MM-dd”,timezone="GMT+8")// 后台传数据到前台 private Date birthday; //----------------------...
  • Java YearMonth日期类应用

    千次阅读 2018-08-15 13:09:14
    Java YearMonth日期类应用 在项目中会遇到仅需要存取年月,由于数据库一般不支持不完整日期格式,因此日期之间转换比较麻烦。本文通过介绍YearMonth类实现年月日期存取过程。 1. 概述 YearMonth是不可变的日期...
  • java中的日期类

    万次阅读 2013-05-05 21:49:55
    最近关于java中的日期类不是特别清楚,就google了一下,找了一些大神的文章看了一下,然后整理一下 java中的日期处理类总结:Date/Calendar/GregorianCalendar/DateFormat/SimpleDateFormat类 一、Date类(该类...
  • title: Java8-08-java8 日期类 date: 2019-2-27 15:48:49 +0800 categories: [Java] tags: [java, jdk8, sh] published: true Java SE 8 Date and Time 为什么需要? Java开发人员的一个长期困扰是对普通开发人员的...
  • java日期与cron表达式互转工具

    千次阅读 2019-03-20 11:34:09
    问题:java日期与cron表达式互转工具 代码如下 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; /** * @Author Guixing * @Date 2019/3/20 11:19 * @...
  • Java 日期时间

    千次阅读 2019-04-01 11:21:10
    Java中获取当前日期和时间很简单,使用 Date 对象的 toString() 方法来打印当前日期和时间,如下所示: 日期比较 Java使用以下三种方法来比较两个日期: 使用 getTime() 方法获取两个日期(自1970年1月1日经历的...
  • java日期工具DateUtil

    万次阅读 多人点赞 2012-11-30 14:15:21
    一名优秀的程序员,不仅需要...虽然网络上也有类似的工具,但我愿意自己写的原因有三: 1、好代码并不容易找,不满足需要的倒是不少 2、可能存在未知的bug 3、丧失了巩固和提高自己的机会 废话不多说,我的源码如
  • java中常用的日期工具

    千次阅读 2019-04-28 17:51:49
    java中常用的日期工具 日期相关的: package net.yto.ofclacct.core.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import...
  • Java 8 的日期类和时间类(转载)

    千次阅读 2018-05-31 23:10:45
    Java 8 推出了全新的日期时间API,Java 8 下的 java.time包下的所有都是不可变类型而且线程安全。下面是新版API中java.time包里的一些关键:Instant:瞬时实例。LocalDate:本地日期,不包含具体时间 例如:...
  • java时间日期工具

    千次阅读 2018-08-28 15:31:36
    package com.bigname.common; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.List...
  • Java时间与日期类(Calendar类的方法应用与打印日历) 日期与时间类 (以下所有文字和代码均为手敲,原本应该昨天已经写好了一半了。没想到一关机自动保存的都不见了,然后今天再敲一遍【有什么不对或者敲错的地方...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 255,755
精华内容 102,302
关键字:

java日期类

java 订阅