JavaSE核心之一:Date类、Calendar类、Math类、枚举;
1.Date类
1) java.util.Date类用于封装日期及时间信息,一般仅用它显示某个日期,不对他作任何操作处理,作处理用Calendar类,计算方便。

2) Date 类本质上拥有一个long fastTime属性的包装类,提供了很多属性和方法用于快速获取年月日、时分秒。而fastTime就是时间戳。
import java.util.Date;
public class Test1 {
public static void main(String[] args) {
// 查看当前系统平台时区、环境等的时间
Date _date = new Date();
System.out.println(_date);
//获取_date的时间戳,计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms) ;
long _time = _date.getTime();
System.out.println(_time);//输出1556540877266 ,(是该时间距离 历元 经过的毫秒数)
//通过时间戳创建Date对象
long ftime = 0;
Date _date2 = new Date(ftime);
System.out.println(_date2);//输出Thu Jan 01 08:00:00 CST 1970;
}
}
3) 日期的格式化,把Date对象格式化成特定的字符串;
import java.text.SimpleDateFormat;
import java.util.Date; public class test3 {
public static void main(String[] args) {
Date _date = new Date();
System.out.println(_date);//输出Date对象时间 Mon Apr 29 21:29:38 CST 2019 //日期格式化->字符串
SimpleDateFormat datef = new SimpleDateFormat(); //这是日期格式化为字符串的默认的模式和语言环境 String dateStr = datef.format(_date);
System.out.println(dateStr);//输出19-4-29 下午9:28 //使用指定模式格式化 ; 例如格式化成:xxxx年xx月xx日 xx时xx分xx秒 SimpleDateFormat datef2 = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
String dateStr2 = datef2.format(_date);
System.out.println(dateStr2);//输出2019年04月29日 21时44分26秒 //还可以修改此模式 例如修改为yyyy-MM-dd模式
datef2.applyPattern("yyyy-MM-dd");
String dateStr3 = datef2.format(_date);
System.out.println(dateStr3);//输出2019-04-29 } }
把特定的字符串转为Date对象
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; public class Test4 {
public static void main(String[] args) {
//将特定字符串转化为对象Date;
String str = "2019-04-29"; SimpleDateFormat datef = new SimpleDateFormat("yyyy-MM-dd");
//把子串>>>Date try {
Date _date = datef.parse(str);
System.out.println(_date);
} catch (ParseException e) { e.printStackTrace();
} } }
4) 需求:构建一个未来3天的当前的时间;
import java.text.SimpleDateFormat;
import java.util.Date; public class Test2 {
public static void main(String[] args) {
//创建一个Date对象,表示当前平台的时间
Date _date = new Date();
//输出当前时间
System.out.println(_date.toString());
SimpleDateFormat datef1 = new SimpleDateFormat("yyyy年MM月dd日");
String dateStr1 = datef1.format(_date);
System.out.println(dateStr1);//输出2019年04月29日 //需求:构建一个未来3天的当前的时间
long ftime = 3*24*3600*1000 + _date.getTime();//加未来3天,3乘24小时
Date _date2 = new Date(ftime);
System.out.println(_date2.toString());//输出Date对象时间 //转化为特定的字符串 xxxx年xx月xx日样式
SimpleDateFormat datef = new SimpleDateFormat("yyyy年MM月dd日");
String dateStr = datef.format(_date2);
System.out.println(dateStr);//输出2019年05月02日 } }
2. Calendar类
1)java.util.Calendar类用于封装日历信息,其主作用在于其方法可以对时间分量进行运算。
通过Calendar的静态方法获取一个实例该方法会根据当前系统所在地区来自行决定时区,帮我们创建Calendar实例,这里要注意,实际上根据不同的地区,Calendar有若干个子类实现。而Calendar本身是抽象类,不能被实例化的。
2) 日历类所解决的根本问题是简化日期的计算,要想表示某个日期还应该使用Date类描述。Calendar是可以将其描述的时间转化为Date的,我们只需要调用其getTime()方法就可以获取描述的日期的Date对象了。
3) 通过日历类计算时间:为日历类设置时间,日历类设置时间使用通用方法set。set(int field,int value),field为时间分量,Calendar提供了相应的常量值,value为对应的值。
4) 只有月份从0开始:0为1月,以此类推,11为12月,其他时间是正常的从1开始。也可以使用Calendar的常量calendar.NOVEMBER……等。
Calendar.DAY_OF_MONTH 月里边的天---号; Calendar.DAY_OF_WEEK 星期里的天---星期几 Calendar.DAY_OF_YEAR 年里的天
Calendar calendar=Calendar.getInstance();//构造出来表示当前时间的日历类
Date now=calendar.getTime();//获取日历所描述的日期
calendar.set(Calendar.YEAR, 2012);//设置日历表示2012年
calendar.set(Calendar.DAY_OF_MONTH,15);//设置日历表示15号
calendar.add(Calendar.DAY_OF_YEAR, 22);//想得到22天以后是哪天
calendar.add(Calendar.DAY_OF_YEAR, -5);//5天以前是哪天
calendar.add(Calendar.MONTH, 1);得到1个月后是哪天
System.out.println(calendar.getTime());
6)获取当前日历表示的日期中的某个时间单位可以使用get方法。
int year=calendar.get(Calendar.YEAR);
int month=calendar.get(Calendar.MONTH);
int day=calendar.get(Calendar.DAY_OF_MONTH);
System.out.println(year+"年"+(month+1)+"月"+day+"日");//month要处理
3.Math类
1)Math 类包含用于执行基本数学运算的方法。例如:随机数、平方、立方等等数学运算。
// 常用属性
System.out.println(Math.PI);//圆周率π的值 System.out.println(Math.abs(-10));//输出10;(绝对值 -10的绝对值是10) System.out.println(Math.ceil(10.1));//输出10.0;ceil:返回比10.1大的最小整数>>> 向上取整 反之floor是向下取整; System.out.println(Math.max(10, 20));//输出20;max取最大值,反之min取最小值; System.out.println(Math.round(4.4)); 输出5;round: 四舍五入; System.out.println(Math.toDegrees(Math.PI/2));// 把弧度转化成角度 System.out.println(Math.toRadians(180));// 把角度转化成弧度 System.out.println(Math.sin(Math.toRadians(30)));// (C)sin(a)/cos(a)/tan(a)
4.枚举
1)枚举是由一组固定的常量组成的类型,自定义数据类型。
语法:
[修饰符] enum enumName{
常量值1,
常量值2,
常量值3…
常量值n[;]
}
//案例:
public enum Gender {
男,
女,
保密;
}
java中所有的枚举类型都继承于Enum类。可以把枚举类型看出一个类。
JavaSE核心之一:Date类、Calendar类、Math类、枚举;的更多相关文章
- 常用类(Date,Calendar,Math,枚举)
1.日期时间类 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(以毫秒ms为单位). 如:计算机时间2019-04-29 14:14:00是该时间距离历元经过的毫 ...
- JAVA之旅(二十三)——System,RunTime,Date,Calendar,Math的数学运算
JAVA之旅(二十三)--System,RunTime,Date,Calendar,Math的数学运算 map实在是太难写了,整理得我都晕都转向了,以后看来需要开一个专题来讲这个了,现在我们来时来学习 ...
- Java常见的类——Number和Math类
但我们使用数据时,我们一般使用内置数据类型,列如:byte,int,long,double等,但是在实际开发过程中,我们一般遇到的是需要使用对象,这时,我们就可以使用 Java 专门为每一个数据类型提 ...
- 日期时间类:Date,Calendar,计算类:Math
日期时间类 计算机如何表示时间? 时间戳(timestamp):距离特定时间的时间间隔. 计算机时间戳是指距离历元(1970-01-01 00:00:00:000)的时间间隔(ms). 计算机中时间2 ...
- Java基础 【Math、Random、System、BigInteger、BigDecimal、Date、Calendar等常用类的使用】
学习的这几个类 是日常工作中经常要使用到的类 Math 类包含用于执行基本数序运算的方法,如初等指数.对数.平方根和 三角函数. 成员方法 1.public static int abs(int a ...
- Date、Calendar、DateFormat类
Date类与Calendar类之间的转换 package date; import java.util.Calendar; import java.util.Date; public class Da ...
- Java常用类之【Math类、Random类、System类、Runtime类】
一.Math类 Math类 [绝对值]Math.abs();//返回对应类型的绝对值 [最大值和最小值]Math.max(int a, int b) ,Math.min(int a,int b);(其 ...
- 构造方法,重载,static,math类(java基础知识七)
1.构造方法概述和格式 * A:构造方法概述和作用 * 给对象的数据(属性)进行初始化 * B:构造方法格式特点 * a:方法名与类名相同(大小也要与类名一致) * b:没有返 ...
- Java.util.Math类--数学相关的工具类
Math类--数学相关的工具类 java.util.Math类是数学相关的工具类,里面提供了大量的静态方法,完成与数学运算相关的操作. public static double abs(double ...
随机推荐
- linux使用privoxy将55转为http代理
=============================================== 2018/3/21_第3次修改 ccb_warlock 更新 ...
- HTML-全局属性 / 事件属性(转)
拷贝自:< http://www.runoob.com > HTML 全局属性 New : HTML5 新属性. 属性 描述 accesskey 设置访问元素的键盘快捷键. class 规 ...
- nginx的一次工作记录
upstream fazhi_ui{ server ; } upstream fazhi_api{ server ; } server { listen ; server_name localhost ...
- MYSQL性能优化(2)
Insert语句优化 1. 多行并为一个语句 insert into table values (行1),(行2),........... 2. 使用中间内存队列, 逻辑是立马执行插入,其他数据放 ...
- LevelDB源码分析-sstable的Block
sstable中的Block(table/block.h table/block.cc table/block_builder.h table/block_builder.cc) sstable中的b ...
- java 多线程学习
一.概念 程序.进程.线程 程序 是计算机指令的集合. 进程 是一个运行中的程序,它指的是从代码加载,执行到执行结束这样一个完整过程.每个进程占用不同的内存空间. 线程 是进程中某个单一顺 ...
- VC6的工程转到VC2010或更高版本出现fatal error C1189编译错误的解决方法
以前也遇到过,当时解决了没写下来,这次正好又遇到了,就顺手写一下吧,别下次又忘记了. 当VC6的工程转到VC2010或更高版本时编译出现如下错误: c:\program files\microsoft ...
- java学习笔记(七):for循环
java的for循环和c++的for循环类似 public class Test { public static void main(String args[]) { for(int x = 10; ...
- scrapy+redis去重实现增量抓取
class ProjectnameDownloaderMiddleware(object): # Not all methods need to be defined. If a method is ...
- 小强学渲染之OpenGL的GPU管线
GPU渲染流水线,是硬件真正体现渲染概念的操作过程,也是最终将图元画到2D屏幕上的阶段.GPU管线涵盖了渲染流程的 几何阶段 和 光栅化阶段,但对开发者而言,只有对顶点和片段着色器有可编程控制权,其他 ...