您的位置:首页 > 编程语言 > Java开发

java中跟时间相关的类

2017-08-02 20:59 197 查看

1.SimpleDateFormat

public class SimpleDateFormat extends DateFormat
SimpleDateFormat
是一个以国别敏感的方式格式化和分析数据的具体类。 它允许格式化 (date -> text)、语法分析 (text -> date)和标准化。

SimpleDateFormat
允许以为日期-时间格式化选择任何用户指定的方式启动。 但是,希望用
DateFormat
中的
getTimeInstance
getDateInstance
getDateTimeInstance
创建一个日期-时间格式化程序。 每个类方法返回一个以缺省格式化方式初始化的日期/时间格式化程序。 可以根据需要用
applyPattern
方法修改格式化方式。

SimpleDateFormat类的继承关系:
java.lang.Object

   |

   +----java.text.Format

           |

           +----java.text.DateFormat

                   |

                   +----java.text.SimpleDateFormat

下面是个小例子:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
    SimpleDateFormat函数语法:
    
    G 年代标志符
    y 年
    M 月
    d 日
    h 时 在上午或下午 (1~12)
    H 时 在一天中 (0~23)
    m 分
    s 秒
    S 毫秒
    E 星期
    D 一年中的第几天
    F 一月中第几个星期几
    w 一年中第几个星期
    W 一月中第几个星期
    a 上午 / 下午 标记符
    k 时 在一天中 (1~24)
    K 时 在上午或下午 (0~11)
    z 时区
*/  

public class simpleDateFormat {
    
    public static void main(String[] args) {

        //利用构造函数设置格式化模板
        SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");  
        SimpleDateFormat myFmt1=new SimpleDateFormat("yy/MM/dd HH:mm");  
        SimpleDateFormat myFmt2=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//等价于now.toLocaleString()  
        SimpleDateFormat myFmt3=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");  
        SimpleDateFormat myFmt4=new SimpleDateFormat(
                "一年中的第 D 天 一年中第w个星期 一月中第W个星期 在一天中k时 z时区");
        //Date 表示距离1970-01-01 00:00:00的毫秒数,值与时区无关。
        Date now = new Date();
        //执行格式化功能
        System.out.println(myFmt.format(now));  
        System.out.println(myFmt1.format(now));  
        System.out.println(myFmt2.format(now));  
        System.out.println(myFmt3.format(now));  
        System.out.println(myFmt4.format(now));  
        
        //applyPattern方法设置格式化模板
        myFmt.applyPattern("yyyy-MM-dd");
        System.out.println(myFmt.format(now));
        
        //parse()方法用于将输入的特定字符串转换成Date类的对象
        Date date = null;
        String s = "2017-12-29 上午12:03";
        try {
            date = myFmt.parse(s);
        } catch (ParseException e) {
            e.printStackTrace();
        }
        //toString时用本地时区输出,如Thu Jun 30 17:12:57 CST 2016,CST表示China Standard Time。
        System.out.println("date对象为" + date);//也可以直接利用toString方法输出
        System.out.println("date对象为" + date.toString());
    }
}


效果:

2017年12月29日 11时11分53秒

17/12/29 11:11

2017-12-29 11:11:53

2017年12月29日 11时11分53秒 星期五

一年中的第 363 天 一年中第52个星期 一月中第5个星期 在一天中11时 CST时区

2017-12-29

date对象为Fri Dec 29 00:00:00 CST 2017

date对象为Fri Dec 29 00:00:00 CST 2017

下面是一个格式化时间的工具类:

public class FormatDateTime {

public static String toLongDateString(Date dt){
SimpleDateFormat myFmt=new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒 E ");
return myFmt.format(dt);
}

public static String toShortDateString(Date dt){
SimpleDateFormat myFmt=new SimpleDateFormat("yy年MM月dd日 HH时mm分");
return myFmt.format(dt);
}

public static String toLongTimeString(Date dt){
SimpleDateFormat myFmt=new SimpleDateFormat("HH mm ss SSSS");
return myFmt.format(dt);
}
public static String toShortTimeString(Date dt){
SimpleDateFormat myFmt=new SimpleDateFormat("yy/MM/dd HH:mm");
return myFmt.format(dt);
}

public static void main(String[] args) {

Date now=new Date();

System.out.println(FormatDateTime.toLongDateString(now));
System.out.println(FormatDateTime.toShortDateString(now));
System.out.println(FormatDateTime.toLongTimeString(now));
System.out.println(FormatDateTime.toShortTimeString(now));
}

}


调用的结果如下:

2017年12月29日 10时46分09秒 星期五

17年12月29日 10时46分

10 46 09 0673
17/12/29 10:46

2.Date

Date类的继承关系:

java.lang.Object

   |

   +----java.util.Date

应用举例:

import java.util.Date;

public class dateTest {
public static void main(String[] args){
//第一种构造函数.无参构造创建的对象可以获取本机的当前日期和时间
Date date1=new Date();
//Date默认的时间表示顺序是:星期几、月、日、小时、分、秒、年。见下面的输出:
System.out.println(date1);
System.out.println(date1.toString());

//第二种构造函数。public Date(long date);
//首先,计算机将自身时间的“公元”设置为1970年1月1日00:00:00 GMT(格林威治时间)。
//其次,根据参数date,正值表示公元后的时间,负值表示公元前的时间;
//然后,创建一个 Date对象date2,并将其初始化为"公元"后的指定毫秒数1000。
//最后,运行该java程序的计算机是在北京时区,date2表示的时间为:1970年1月1日08:00:01
Date date2=new Date(1000);
System.out.println(date2);

//public long getTime();
//返回相对于1970年1月1日00:00:00 GMT而言,此 Date对象表示的毫秒数。
//运行该java程序的计算机是在北京时区,date2.getTime()表示相对于1970年1月1日08:00:00经过的毫秒数。
System.out.println(date2.getTime());

//System类的静态方法public long currentTimeMillis()获取系统当前时间。
//运行该java程序的计算机是在北京时区,这个值是从1970年1月1日08:00:00到目前时刻走过的毫秒数。
System.out.println(new Date().getTime());
System.out.println(System.currentTimeMillis());

//public void setTime(long time);
//将Date对象设置为相对于1970年1月1日00:00:00 GMT后的time毫秒的时间点。  不再举例
}
}

执行结果:

Fri Dec 29 14:04:59 CST 2017

Fri Dec 29 14:04:59 CST 2017

Thu Jan 01 08:00:01 CST 1970

1000

1514527499432

1514527499432

3.Calendar

public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable<Calendar>


Calendar类的继承关系:

java.lang.Object

   |

   +----java.util.Calendar
同样,Calendar类也在java.util包中。单词Calendar中文翻译为日历,实际上,在历史上有着许多种计时的方法。所以为了计时的统一,必需制定一个日历的标准。那现在最为普及和通用的日历标准就是"Gregorian Calendar"。也就是我们在讲述年份时常用"公元**年"。Calendar 在 Java 中是一个抽象类(Abstract Class),GregorianCalendar 是它的一个具体实现。使用Calendar类的static方法getInstance(),就可以初始化一个日历对象(获得一个"GreogrianCalendar"对象实例)。

Calendar对象可以调用以下三个set方法,将日历翻到任何一个时刻,当参数year取负值时表示公元前。

void set(int year, int month, int date) ;
void set(int year, int month, int date, int hourOfDay, int minute) ;
void set(int year, int month, int date, int hourOfDay, int minute, int second) ;
Calendar对象可以调用public int get(int field)方法获取年份、月份、小时、星期等信息。其中参数field的有效值由Calendar的静态常量指定。

应用举例:

import java.util.Calendar;
import java.util.Date;

class CalendarTest{
public static void main(String[] args)
{
Calendar cal = Calendar.getInstance();
int year = cal.get(Calendar.YEAR);
//比当前月份少1
int month = cal.get(Calendar.MONTH);
//date表示日期,day表示天数,所以date与day_of_month相同
int date = cal.get(Calendar.DATE);
int dayOfMonth = cal.get(Calendar.DAY_OF_MONTH);
//表示本周的第几天,从周日开始计算
int dayOfWeek = cal.get(Calendar.DAY_OF_WEEK);
int dayOfYear = cal.get(Calendar.DAY_OF_YEAR);
//12小时制
int hour = cal.get(Calendar.HOUR);
//24小时制
int hourOfDay = cal.get(Calendar.HOUR_OF_DAY);
int minute = cal.get(Calendar.MINUTE);
int second = cal.get(Calendar.SECOND);
int millisecond = cal.get(Calendar.MILLISECOND);
int maxDate = cal.getActualMaximum(Calendar.DATE);
System.out.println("现在的年份为:" + year);
System.out.println("现在的月份为:" + month);
System.out.println("现在的号为:" + date);
System.out.println("现在的号为:" + dayOfMonth);
System.out.println("现在是星期:" + (dayOfWeek-1));
System.out.println("现在过了的天数为:" + dayOfYear);
System.out.println("现在几点:" + hour);
System.out.println("现在几点:" + hourOfDay);
System.out.println("现在几分:" + minute);
System.out.println("现在几秒:" + second);
System.out.println("现在几毫秒:" + millisecond);
System.out.println("本月最后一天是:" + maxDate);
}
}


输出结果为:

现在的年份为:2017

现在的月份为:11

现在的号为:29

现在的号为:29

现在是星期:5

现在过了的天数为:363

现在几点:2

现在几点:14

现在几分:36

现在几秒:29

现在几毫秒:450

本月最后一天是:31

4.Date和Calendar之间转换

代码如下:

import java.util.Calendar;
import java.util.Date;

public class DateToCalendar {

public static void main(String[] args) {
//Calendar → Date 的转换

Calendar calendar = Calendar.getInstance();
// 从一个Calendar对象中获取Date对象
Date now = calendar.getTime();
System.out.println(now);

//  Date  → Calendar 的转换
// Calendar/GregorianCalendar都没有构造函数可以接受Date对象
//所以我们必需先获得一个Calendar实例,然后设置Date对象
Calendar cal = Calendar.getInstance();
cal.setTime(now);
}
}


5.代码的执行时间

public String exportData(){
Date date = new Date();

//核心业务代码
String msg = "一大批需要执行的业务代码";

Date endDate = new Date();
long diff = endDate.getTime() - date.getTime();

//此处最好使用日志相关的方法,入logger.info();
System.out.println("导出商品档案条,耗时"+diff+"毫秒");

return msg;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: