Date-Calcendar-DateFormat-System-Math
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Date-Calcendar-DateFormat-System-Math相关的知识,希望对你有一定的参考价值。
一.Date类(java.util)
作用:表示时间的类,精确到毫秒,以GMT 1970年1月1日0点0分0秒起算
构造方法:
Data() ---获取当前时间
Date(long time)---计算时间,结果为=time+GMT 1970年1月1日0点0分0秒
注:1s = 1000ms
成员方法:
getTime():返回long类型,返回自起始时间至设定时间的毫秒数;
setTime(long time):无返回值,使用给定的时间创建时间对象;
代码1:
import java.util.Date; import java.text.DateFormat; public class DateDemo{ public static void main(String[] args){ //利用有参构造方法设定时间:从起始时间加1s Date date = new Date(1000); System.out.println(date); //8:00:01 //利用setTime设定时间:从起始时间加1s date.setTime(1000); //8:00:01 问题:为什么不是8:00:02? System.out.println(date); //利用getTime返回时间.返回值为传入的时间与起始时间差的毫秒数 long n = date.getTime(); System.out.println(n); } }
代码2:
//需求:返回当前时间,并计算其与起始时间的差值(以毫秒为单位) import java.util.Date; import java.text.DateFormat; public class DateDemo{ public static void main(String[] args){ //利用无参构造得到当前时间 Date date = new Date(); System.out.println(date); //利用getTime()方法返回与起始时间的差值 long n = date.getTime(); System.out.println(n); } }
二.DateFormat类(java.text)
简介:抽象类,有4个静态方法(不含重载),可由类直接调用.如果需要处理时间需创建子类(SimpleDateFormat)
作用:格式化并解析日期/时间.完成字符串与日期之间的转换(日期-->文本,文本-->日期)
成员方法:
format(Date date):返回String类型,把日期转换成字符串;
parse(String sourece):返回Date类型,字符串转换为日期;
静态方法:
getAvailableLocable()
getDateInstance()
getDateTimeInstance()
getTimeInstance()
代码1:
//format练习--需求:获取系统当前时间,并以"年-月-日"的形式输出 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; public class TimeTest{ public static void main(String[] args){ //获取当前时间 Date date = new Date(); //设定日期格式--字符串形式 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //将当前日期格式化为设定的格式---字符串(日期-->字符串) String dateStr = df.format(date); //输出 System.out.println(dateStr); } }
代码2:
//parse练习--字符串转为日期 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.text.ParseException; public class DateDemo{ public static void main(String[] args){ //定义日期(字符串形式):2017-09-09 12:38:45 String myDate = "2017-09-09 12:38:45"; //利用SimpleDateFormat构造方法,设定参数为需要解析的格式 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); //调用parse()方法解析字符串为日期格式 Date date = null; //需捕获ParseException异常,防止用户输入的与指定格式不符 try{ date = df.parse(myDate);//parse()返回date类型 }catch(ParseException pe){//捕获异常时需要导包!!!! System.out.println("日期格式与指定格式不符!"); } System.out.println(date); } }
代码3:
//利用parse和format将用户输入的字符串以‘x年x月x日‘的形式输出 import java.util.Date; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.text.ParseException; public class DateDemo{ public static void main(String[] args){ //定义日期(字符串形式):2017-09-09 12:38:45 String myDate = "2017-09-09 12:38:45"; //利用parse解析为日期格式,参数为需要解析的格式 DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); Date date = null; try{ date = df.parse(myDate);//parse()返回date类型 }catch(ParseException pe){//捕获异常时需要导包!!!! System.out.println("日期格式与指定格式不符!"); pe.printStackTrace(); } //转换为‘xxx年xx月‘的形式输出 DateFormat df1 = new SimpleDateFormat("yyyy年MM月dd日"); String myDateCov = df1.format(date); System.out.println(myDateCov); /*思考:以上转换方式为:输入的字符串---parse()为系统标准日期格式---format()成所需要显示的格式. 也许可以通过字符串的的替换操作(是不是可以用regex)来完成?*/ } }
三.Calendar类(java.util)
简介:抽象类,含静态方法,需使用子类对象处理日历.可通过其中的静态方法得到子类对象
定义:public abstract class Calendar extends Object implements Serializable, Cloneable, Comparable<Calendar>{}
子类:GregorianCalendar
作用:
初始化:利用静态方法创建对象 Calendar c = Calendar.getInstance();(返回当前时间,以java.util.GregorianCalendar开头的一大串字符..)
常量(field):
public static final int YEAR :取得年
public static final int MONTH :取得月
public static final int DAY_OF_MONTH :取得日
public static final int HOUR_OF_DAY :取得小时
public static final int MINUTE : 取得分
public static final int SECOND :取得秒
public static final int MILLISECOND :取得毫秒
成员方法:
public static Calendar getInstace() : 根据默认时区实例化对象
public int get(int field):返回给定日历字段的值
public abstract void add(int field, int amount):为给定的日历字段添加或减去指定的时间量
public date getTime():获取该日历对象转成的日期对象
public void set(int field, int value):设置指定字段的值
代码:
import java.util.Calendar; import java.util.Date; public class DateDemo{ public static void main(String[] args){ //实例化对象 Calendar rightNow = Calendar.getInstance(); //System.out.println(rightNow); //getTime()获取日期 Date myDate = rightNow.getTime(); System.out.println(myDate); //get(int field)返回年份/月份 int year = rightNow.get(Calendar.YEAR); System.out.println(year); int mon = rightNow.get(Calendar.MONTH)+1;//注意:0-11表示12个月,所以需加1才可返回真实月份 System.out.println(mon); //set()设定指定字段的值 rightNow.set(Calendar.YEAR,2010); System.out.println(rightNow.get(Calendar.YEAR)); rightNow.set(2012,02,02);//2012年3月2号 System.out.println(rightNow.getTime()); } }
四.System类(java.lang)
定义:public final class System extends Object{}; System类中所有的属性和方法都是静态的,可由类名直接调用
属性: in out err
方法:
public static void exit(int status): 系统退出,0表示正常退出;非0为非正常退出
public static long currentTimeMillis(): 返回以毫秒为单位的当前时间
public static void arraycopy(Object src(源数组名称), int srcPos(源数组开始点), Object dest(目标数组名称), int destPos(目标数组开始点), int length):复制数组
public static Properties getProperties():取得当前系统的全部属性
代码:
//需求:复制数组arraycopy import java.util.Arrays; public class ArrayCopyDemo{ public static void main(String[] args){ int[] i = {3,4,78,23}; int[] i2 = {2,2,3,4,5}; System.arraycopy(i,1,i2,1,2); //注意目标数组的长度 for(int j = 0;j<i2.length;j++){ System.out.print(i2[j]+"\t"); } System.out.println("\n"+Arrays.toString(i2)); } }
//需求:取得系统属性值并计算程序计算耗时
import java.util.Arrays; public class ProgramTime{ public static void main(String[] args){ //输出系统全部属性值 System.out.println(System.getProperties());//注意getProperties()复数形式获取所有 //输出java相关的系统属性值 System.out.println(System.getProperty("java.version"));//getProperty()单数形式获取指定键记录的系统属性 //记录系统当前时间 long start = System.currentTimeMillis(); //运行程序 double[] i = new double[1000]; for(int k = 0; k<i.length;k++){ i[k]=Math.pow(2,k); //使用Math函数,需由Math调用 } System.out.println(Arrays.toString(i)); //记录程序结束时系统时间 long end = System.currentTimeMillis(); //输出程序运行的时间 System.out.println("耗时:"+(end-start)); } }
五.Math类(java.lang)
静态方法:
abs():取绝对值,返回值类型由参数(int long double float)决定;
ceil(double a):向上取整,比参数大的最小整数,返回double类型;
floor(double a):向下取整,比参数小的最大整数,返回double类型;
floorDiv():地板除,对于商向下取整;返回值类型由参数(int long)决定;需捕获AirthMeticException;java8新特性
floorMod():地板模,对于模向下取整;返回值类型由参数(int long)决定;需捕获AirthMeticException;java8新特性(感觉跟%运算一样,不晓得为什么增加这个功能);
max():比较两个 double/float/int/long 类型,并返回最大值
min():比较两个 double/float/int/long 类型,并返回最小值
pow(double a,double b):a的b次幂,返回double类型
random():得到0.0-1.0之间的随机小数,不包含1.0,无参数,返回double类型;
round():四舍五入,参数为double,返回long;参数为float,返回int;
代码:
import java.util.Random; public class MathDemo{ public static void main(String[] args){ //floorDiv()对于商向下取整,可传入int/long两种类型 int a = 3; int b =10; int c = Math.floorDiv(a,b); System.out.println(c);//0 //floor():向下取整,仅支持double类型 System.out.println(Math.floor(Math.floorDiv(3,10)));//0.0 //发生了隐式转换Math.floorDiv(3,10)返回int类型 //floorMod()对于模数向下取整,可传入int/long两种类型 System.out.println(Math.floorMod(4,3));//1 System.out.println(4%3);//1 //max()/min()返回两个数中较大/较小的, int long float double System.out.println(Math.max(3.0,5.3));//5.3 System.out.println(Math.min(3.0,5.3));//3.0 //pow(double a, double b)返回double类型 System.out.println(Math.pow(3.0,3.0));//27.0 //random()-产生0-1之间的随机数,double类型的,不包含1 System.out.println(Math.random()); //利用java.util.Random类产生三个1-100(含100)的随机数 Random r = new Random(); for(int j = 0; j<3; j++){ int i =r.nextInt(100)+1;//r.nextInt(100)产生0-99的数 System.out.print(i+"\t"); } //round():参数为double,返回long;参数为float,返回int System.out.println("\n====================="); System.out.println(Math.round(Math.random()*100)); } }
六.包装类
1.字符串转为基本类型:
Boolen类:String-->boolean,利用Boolean类中的public static Boolen parseBoolean(String s)静态方法
Byte类:public static Byte parseByte(String s)
Character类:无解析方法
Double类:public static Double parseDouble(String s)
Float类:public static Float parseFloat(String s)
Integer类:public static Integer parseInt(String s) 字符串转为数字时,字符串内容必须全为数字,不能包含空格及其它
Long类:public static Long parseLong(String s)
Short类:public static Short parseShort(String s)
代码:
//需求:将字符串转为各基本类型 public class StringDemo{ public static void main(String[] args){ //定义字符串"100",利用parseInt()解析为int值 String str1 = "100"; try{ int in = Integer.parseInt(str1); System.out.println("字符串转为整型:"+in); System.out.println("字符串转为byte型:"+Byte.parseByte(str1)); }catch(NumberFormatException e) { System.out.println("数字格式有问题!"); e.printStackTrace(); } //定义字符串"3.14",利用parseDouble()解析为double类型 String str2 = "3.14"; double dou = Double.parseDouble(str2);//do为关键字!! System.out.println("字符串转为双精度浮点型:"+dou); System.out.println("字符串转为单精度浮点型"+Float.parseFloat(str2)); //定义字符串"true",利用parseBoolean()转为布尔型 String str3 = "true"; System.out.println("字符串转为布尔型:"+Boolean.parseBoolean(str3)); } }
以上是关于Date-Calcendar-DateFormat-System-Math的主要内容,如果未能解决你的问题,请参考以下文章