Java日期时间类

 Java日期时间类


 

日期类

日期和时间的格式化编码

时间模式字符串用来指定时间格式。在此模式中,所有的 ASCII 字母被保留为模式字母

字母

描述

示例

G

纪元标记

AD

y

四位年份

2001

M

月份

July or 07

d

一个月的日期

10

h

 A.M./P.M.   (1~12)格式小时

12

H

一天中的小时   (0~23)

22

m

分钟数

30

s

秒数

55

S

毫秒数

234

E

星期几

Tuesday

D

一年中的日子

360

F

一个月中第几周的周几

2 (second Wed.   in July)

w

一年中第几周

40

W

一个月中第几周

1

a

A.M./P.M. 标记

PM

k

一天中的小时(1~24)

24

K

 A.M./P.M.   (0~11)格式小时

10

z

时区

Eastern Standard   Time

'

文字定界符

Delimiter

"

单引号

`

获取当前日期时间

import java.util.Date;

public class DateDemo {

   public static void main(String args[]) {

       Date date = new Date();

       System.out.println(date.toString());

   }

}

使用 SimpleDateFormat 格式化日期

import  java.util.*;

import java.text.*;

public class DateDemo {

   public static void main(String args[]) {

      Date dNow = new Date( );

      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd hh:mm:ss");

      System.out.println("当前时间为: " + ft.format(dNow));

   }

}

解析字符串为时间

SimpleDateFormat 类有一些附加的方法,特别是parse(),它试图按照给定的SimpleDateFormat 对象的格式化存储来解析字符串。

import java.util.*;

import java.text.*;

public class DateDemo {

   public static void main(String args[]) {

      SimpleDateFormat ft = new SimpleDateFormat ("yyyy-MM-dd");

      String input = args.length == 0 ? "1818-11-11" : args[0];

      System.out.print(input + " Parses as ");

      Date t;

      try {

          t = ft.parse(input);

          System.out.println(t);

      } catch (ParseException e) {

          System.out.println("Unparseable using " + ft);

      }

   }

}

Java 休眠(sleep)

sleep()使当前线程进入停滞状态(阻塞当前线程),让出CPU的使用、目的是不让当前线程独自霸占该进程所获的CPU资源,以留一定时间给其他线程执行的机会。你可以让程序休眠一毫秒的时间或者到您的计算机的寿命长的任意段时间。下面的程序会休眠3秒:

import java.util.*;

public class SleepDemo {

   public static void main(String args[]) {

      try {

         System.out.println(new Date( ) + "\n");

         Thread.sleep(1000*3);   // 休眠3秒

         System.out.println(new Date( ) + "\n");

      } catch (Exception e) {

          System.out.println("Got an exception!");

      }

   }

}

 

使用printf格式化日期

printf 方法可以很轻松地格式化时间和日期。使用两个字母格式,它以 %t 开头并且以下面表格中的一个字母结尾。

转  换    符

说    明

示    例

c

包括全部日期和时间信息

星期六 十月 27   14:21:20 CST 2007

F

"年-月-日"格式

2007-10-27

D

"月/日/年"格式

10/27/07

r

"HH:MM:SS   PM"格式(12时制)

02:25:51 下午

T

"HH:MM:SS"格式(24时制)

14:28:16

R

"HH:MM"格式(24时制)

14:28

import java.util.Date;

public class DateDemo {

  public static void main(String args[]) {

     Date date = new Date();

     //c的使用 

    System.out.printf("全部日期和时间信息:%tc%n",date);         

    //f的使用 

    System.out.printf("年-月-日格式:%tF%n",date); 

    //d的使用 

    System.out.printf("月/日/年格式:%tD%n",date); 

    //r的使用 

    System.out.printf("HH:MM:SS PM格式(12时制):%tr%n",date); 

    //t的使用 

    System.out.printf("HH:MM:SS格式(24时制):%tT%n",date); 

    //R的使用 

    System.out.printf("HH:MM格式(24时制):%tR",date); 

  }

}

如果你需要重复提供日期,那么利用这种方式来格式化它的每一部分就有点复杂了。因此,可以利用一个格式化字符串指出要被格式化的参数的索引。索引必须紧跟在%后面,而且必须以$结束。

import java.util.Date;

public class DateDemo {

   public static void main(String args[]) {

       Date date = new Date();

       // 使用toString()显示日期和时间

       System.out.printf("%1$s %2$tB %2$td, %2$tY",

                         "Due date:", date);

   }

}

Due date: February 09, 2014

定义日期格式的转换符可以使日期通过指定的转换符生成新字符串。

import java.util.*;

public class DateDemo {

   public static void main(String args[]) {

       Date date=new Date();                                     

        //b的使用,月份简称 

        String str=String.format(Locale.US,"英文月份简称:%tb",date);      

        System.out.println(str);                                                                             

        System.out.printf("本地月份简称:%tb%n",date); 

        //B的使用,月份全称 

        str=String.format(Locale.US,"英文月份全称:%tB",date); 

        System.out.println(str); 

        System.out.printf("本地月份全称:%tB%n",date); 

        //a的使用,星期简称 

        str=String.format(Locale.US,"英文星期的简称:%ta",date); 

        System.out.println(str); 

        //A的使用,星期全称 

        System.out.printf("本地星期的简称:%tA%n",date); 

        //C的使用,年前两位 

        System.out.printf("年的前两位数字(不足两位前面补0):%tC%n",date); 

        //y的使用,年后两位 

        System.out.printf("年的后两位数字(不足两位前面补0):%ty%n",date); 

        //j的使用,一年的天数 

        System.out.printf("一年中的天数(即年的第几天):%tj%n",date); 

        //m的使用,月份 

        System.out.printf("两位数字的月份(不足两位前面补0):%tm%n",date); 

        //d的使用,日(二位,不够补零) 

        System.out.printf("两位数字的日(不足两位前面补0):%td%n",date); 

        //e的使用,日(一位不补零) 

        System.out.printf("月份的日(前面不补0):%te",date); 

   }

}

英文月份简称:May

本地月份简称:五月

英文月份全称:May

本地月份全称:五月

英文星期的简称:Thu

本地星期的简称:星期四

年的前两位数字(不足两位前面补0):20

年的后两位数字(不足两位前面补0):17

一年中的天数(即年的第几天):124

两位数字的月份(不足两位前面补0):05

两位数字的日(不足两位前面补0):04

月份的日(前面不补0):4

Calendar类

Calendar类是一个抽象类,在实际使用时实现特定的子类的对象,创建对象的过程对程序员来说是透明的,只需要使用getInstance方法创建即可。

创建一个代表系统当前日期的Calendar对象

Calendar c = Calendar.getInstance();//默认是当前日期

创建一个指定日期的Calendar对象

使用Calendar类代表特定的时间,需要首先创建一个Calendar的对象,然后再设定该对象中的年月日参数来完成。

//创建一个代表2009年6月12日的Calendar对象

Calendar c1 = Calendar.getInstance();

c1.set(2009, 6 - 1, 12);

Calendar类对象字段类型

常量

描述

Calendar.YEAR

年份

Calendar.MONTH

月份

Calendar.DATE

日期

Calendar.DAY_OF_MONTH

日期,和上面的字段意义完全相同

Calendar.HOUR

12小时制的小时

Calendar.HOUR_OF_DAY

24小时制的小时

Calendar.MINUTE

分钟

Calendar.SECOND

Calendar.DAY_OF_WEEK

星期几

Calendar c1 = Calendar.getInstance();

// 获得年份

int year = c1.get(Calendar.YEAR);

// 获得月份

int month = c1.get(Calendar.MONTH) + 1;

// 获得日期

int date = c1.get(Calendar.DATE);

// 获得小时

int hour = c1.get(Calendar.HOUR_OF_DAY);

// 获得分钟

int minute = c1.get(Calendar.MINUTE);

// 获得秒

int second = c1.get(Calendar.SECOND);

// 获得星期几(注意(这个与Date类是不同的):1代表星期日、2代表星期1、3代表星期二,以此类推)

int day = c1.get(Calendar.DAY_OF_WEEK);

                       

GregorianCalendar类

Calendar类实现了公历日历,GregorianCalendar是Calendar类的一个具体实现GregorianCalendar对象的几个构造方法

序号

构造函数和说明

1

GregorianCalendar()  
  在具有默认语言环境的默认时区内使用当前时间构造一个默认的 GregorianCalendar。

2

GregorianCalendar(int   year, int month, int date)
  在具有默认语言环境的默认时区内构造一个带有给定日期设置的 GregorianCalendar

3

GregorianCalendar(int   year, int month, int date, int hour, int minute)
  为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

4

GregorianCalendar(int   year, int month, int date, int hour, int minute, int second)
    为具有默认语言环境的默认时区构造一个具有给定日期和时间设置的 GregorianCalendar。

5

GregorianCalendar(Locale   aLocale)
  在具有给定语言环境的默认时区内构造一个基于当前时间的 GregorianCalendar。

6

GregorianCalendar(TimeZone   zone)
  在具有默认语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

7

GregorianCalendar(TimeZone   zone, Locale aLocale)
   在具有给定语言环境的给定时区内构造一个基于当前时间的 GregorianCalendar。

GregorianCalendar 类提供的一些有用的方法列表

序号

方法和说明

1

void add(int   field, int amount)
  根据日历规则,将指定的(有符号的)时间量添加到给定的日历字段中。

2

protected   void computeFields()
  转换UTC毫秒值为时间域值

3

protected   void computeTime()
  覆盖Calendar ,转换时间域值为UTC毫秒值

4

boolean   equals(Object obj)
  比较此 GregorianCalendar 与指定的 Object。

5

int get(int   field)
  获取指定字段的时间值

6

int   getActualMaximum(int field)
  返回当前日期,给定字段的最大值

7

int   getActualMinimum(int field)
  返回当前日期,给定字段的最小值

8

int   getGreatestMinimum(int field)
   返回此   GregorianCalendar 实例给定日历字段的最高的最小值。

9

Date   getGregorianChange()
  获得格里高利历的更改日期。

10

int   getLeastMaximum(int field)
  返回此 GregorianCalendar 实例给定日历字段的最低的最大值

11

int   getMaximum(int field)
  返回此 GregorianCalendar 实例的给定日历字段的最大值。

12

Date   getTime()
  获取日历当前时间。

13

long   getTimeInMillis()
  获取用长整型表示的日历的当前时间

14

TimeZone   getTimeZone()
  获取时区。

15

int   getMinimum(int field)
  返回给定字段的最小值。

16

int   hashCode()
  重写hashCode.

17

boolean   isLeapYear(int year)
  确定给定的年份是否为闰年。

18

void roll(int   field, boolean up)
  在给定的时间字段上添加或减去(上/下)单个时间单元,不更改更大的字段。

19

void set(int   field, int value)
  用给定的值设置时间字段。

20

void set(int   year, int month, int date)
  设置年、月、日的值。

21

void set(int   year, int month, int date, int hour, int minute)
  设置年、月、日、小时、分钟的值。

22

void set(int   year, int month, int date, int hour, int minute, int second)
  设置年、月、日、小时、分钟、秒的值。

23

void   setGregorianChange(Date date)
  设置 GregorianCalendar 的更改日期。

24

void   setTime(Date date)
  用给定的日期设置Calendar的当前时间。

25

void   setTimeInMillis(long millis)
  用给定的long型毫秒数设置Calendar的当前时间。

26

void   setTimeZone(TimeZone value)
  用给定时区值设置当前时区。

27

String   toString()
  返回代表日历的字符串。

import java.util.*;

public class GregorianCalendarDemo {

   public static void main(String args[]) {

      String months[] = {

      "Jan", "Feb", "Mar", "Apr",

      "May", "Jun", "Jul", "Aug",

      "Sep", "Oct", "Nov", "Dec"};

      int year;

      // 初始化 Gregorian 日历

      // 使用当前时间和日期

      // 默认为本地时间和时区

      GregorianCalendar gcalendar = new GregorianCalendar();

      // 显示当前时间和日期的信息

      System.out.print("Date: ");

      System.out.print(months[gcalendar.get(Calendar.MONTH)]);

      System.out.print(" " + gcalendar.get(Calendar.DATE) + " ");

      System.out.println(year = gcalendar.get(Calendar.YEAR));

      System.out.print("Time: ");

      System.out.print(gcalendar.get(Calendar.HOUR) + ":");

      System.out.print(gcalendar.get(Calendar.MINUTE) + ":");

      System.out.println(gcalendar.get(Calendar.SECOND));

      // 测试当前年份是否为闰年

      if(gcalendar.isLeapYear(year)) {

         System.out.println("当前年份是闰年");

      }

      else {

         System.out.println("当前年份不是闰年");

      }

   }

}

Date: Apr 22 2009

Time: 11:25:27

当前年份不是闰年

数值类数学类

序号

方法与描述

1

xxxValue()
  将 Number 对象转换为xxx数据类型的值并返回。

2

compareTo()
  将number对象与参数比较。

3

equals()
  判断number对象是否与参数相等。

4

valueOf()
  返回一个 Number 对象指定的内置数据类型

5

toString()
  以字符串形式返回值。

6

parseInt()
  将字符串解析为int类型。

7

abs()
  返回参数的绝对值。

8

ceil()
  返回大于等于( >= )给定参数的的最小整数,类型为双精度浮点型。

9

floor()
  返回小于等于(<=)给定参数的最大整数   。

10

rint()
  返回与参数最接近的整数。返回类型为double。

11

round()
  它表示四舍五入,算法为 Math.floor(x+0.5),即将原来的数字加上 0.5 后再向下取整,所以,Math.round(11.5) 的结果为12,Math.round(-11.5) 的结果为-11。

12

min()
  返回两个参数中的最小值。

13

max()
  返回两个参数中的最大值。

14

exp()
  返回自然数底数e的参数次方。

15

log()
  返回参数的自然数底数的对数值。

16

pow()
  返回第一个参数的第二个参数次方。

17

sqrt()
  求参数的算术平方根。

18

sin()
  求指定double类型参数的正弦值。

19

cos()
  求指定double类型参数的余弦值。

20

tan()
  求指定double类型参数的正切值。

21

asin()
  求指定double类型参数的反正弦值。

22

acos()
  求指定double类型参数的反余弦值。

23

atan()
  求指定double类型参数的反正切值。

24

atan2()
  将笛卡尔坐标转换为极坐标,并返回极坐标的角度值。

25

toDegrees()
  将参数转化为角度。

26

toRadians()
  将角度转换为弧度。

27

random()
  返回一个随机数。

Number类

所有的包装类IntegerLongByteDoubleFloatShort都是抽象类 Number 的子类。

这种由编译器特别支持的包装称为装箱,所以当内置数据类型被当作对象使用的时候,编译器会把内置类型装箱为包装类。相似的,编译器也可以把一个对象拆箱为内置类型。Number 类属于 java.lang 包。

public class Test{

   public static void main(String args[]){

      Integer x = 5;

      x = x + 10;

      System.out.println(x);

   }

}

当 x 被赋为整型值时,由于x是一个对象,所以编译器要对x进行装箱。然后,为了使x能进行加运算,所以要对x进行拆箱。

数学类

Math 的方法都被定义为 static 形式,通过 Math 类可以在主函数中直接调用。

// 写程序产生一百个在0和9之间的随机整数(随机数产生的使用 Math.ranadom()),然后统计并输出每个整数出现的次数。

public class $_ShuiJi {

       public static void main(String args[]){

              int number[]=new int[100];

              for (int i=0;i<100;i++){

                     number[i]=(int) (10*Math.random());

              }

              int number2[]=new int[10];

              for(int i=0;i<100;i++){

                     int j=number[i];

                     number2[j]++;

              }

              for(int i=0;i<10;i++){

                     System.out.println("Count for "+i+" is "+number2[i]);

              }

       }

}

 

public class Test { 

    public static void main (String []args) 

    { 

        System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2)); 

        System.out.println("0度的余弦值:" + Math.cos(0)); 

        System.out.println("60度的正切值:" + Math.tan(Math.PI/3)); 

        System.out.println("1的反正切值: " + Math.atan(1)); 

        System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2)); 

        System.out.println(Math.PI); 

    } 

}

90 度的正弦值:1.0

0度的余弦值:1.0

60度的正切值:1.7320508075688767

1的反正切值: 0.7853981633974483

π/2的角度值:90.0

3.141592653589793

转载于:https://www.cnblogs.com/Aha-Best/p/10884522.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值