获取系统当前时间
Date d = new Date();
日期格式化:Date --> String
yyyy-MM-dd HH:mm:ss SSS
SimpleDateFormat sdf = new SimpleDate("yyyy-MM-dd HH:mm:ss SSS");
String s = sdf.format(new Date());
String --> Date
SimpleDateFormat sdf = new SimpleDate("yyyy-MM-dd HH:mm:ss");
Date d = sdf.parse("2008-08-08 08:08:08");
获取毫秒数
//获取自1970年1月1日 00:00:00 000到当前系统时间的总毫秒数。
//1秒 = 1000毫秒
long begin = System.currentTimeMillis();
Date d = new Date(begin - 1000 * 60 * 60 * 24);
public class DateTest03 {
public static void main(String[] args) {
// 这个时间是什么时间?
// 1970-01-01 00:00:00 001
Date time = new Date(1);// 注意:参数是一个毫秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String format = sdf.format(time);
System.out.println(format); // 1970-01-01 08:00:00 001// 北京是东8区。差8个小时。
//查询距今天前24小时的日期时间
Date nowtimeStr = new Date(System.currentTimeMillis() - 1000 * 60 * 60 * 24);
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
String yesterdayTime = sdf2.format(nowtimeStr);
System.out.println(yesterdayTime);
}
}
运行结果:
示例代码01:
public class DateTest01 {
public static void main(String[] args) throws ParseException {
// 获取系统当前时间(精确到毫秒的系统当前时间)
// 直接调用无参数构造方法就行。
Date nowtime = new Date();
System.out.println(nowtime);
// java.util.Date类的toString()方法已经被重写了。
// 输出的应该不是一个对象的内存地址,应该是一个日期字符串。
//System.out.println(nowTime); //Thu Mar 05 10:51:06 CST 2020
// 日期可以格式化吗?
// 将日期类型Date,按照指定的格式进行转换:Date --转换成具有一定格式的日期字符串-->String
// SimpleDateFormat是java.text包下的。专门负责日期格式化的。
/*
yyyy 年(年是4位)
MM 月(月是2位)
dd 日
HH 时
mm 分
ss 秒
SSS 毫秒(毫秒3位,最高999。1000毫秒代表1秒)
注意:在日期格式中,除了y M d H m s S这些字符不能随便写之外,剩下的符号格式自己随意组织。
*/
SimpleDateFormat nowtimeStr = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
//SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
//SimpleDateFormat sdf = new SimpleDateFormat("yy/MM/dd HH:mm:ss");
String s = nowtimeStr.format(nowtime);
System.out.println(s);
// 假设现在有一个日期字符串String,怎么转换成Date类型?
// String --> Date
String s1 = "1997-09-19 19:16:10 888";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS");
//SimpleDateFormat sdf2 = new SimpleDateFormat("格式不能随便写,要和日期字符串格式相同");
// 注意:字符串的日期格式和SimpleDateFormat对象指定的日期格式要一致。不然会出现异常:java.text.ParseException
Date date = sdf.parse(s1);
System.out.println(date);//Fri Aug 08 08:08:08 CST 2008
}
}
运行结果01:
简单总结一下System类的相关属性和方法:
System.out 【out是System类的静态变量。】
System.out.println() 【println()方法不是System类的,是PrintStream类的方法。】
System.gc() 建议启动垃圾回收器
System.currentTimeMillis() 获取自1970年1月1日到系统当前时间的总毫秒数。
System.exit(0) 退出JVM。
DecimalFormat数字格式化
- ###,###.## 表示加入千分位,保留两个小数。
- ###,###.0000 表示加入千分位,保留4个小数,不够补0
BigDecimal
- 财务软件中通常使用BigDecimal
- BigDecimal 属于大数据,精度极高。不属于基本数据类型,属于java对象(引用数据类型)
这是SUN提供的一个类。专门用在财务软件当中。 - 注意:财务软件中double是不够的。咱们之前有一个学生去用友面试,经理就问了这样一个问题:
你处理过财务数据吗?用的哪一种类型?
千万别说double,说java.math.BigDecimal
示例代码02:
public class DecimalTest01 {
public static void main(String[] args) {
/*
* 数字格式化有哪些?
* # 代表任意数字
* ,代表千分位
* . 代表小数点
* 0 代表不够补0
* */
//##,##.##表示加入千分位,保留两位小数
DecimalFormat dec = new DecimalFormat("###,###.##");
String s = dec.format(1234.56);
System.out.println(s);
String s2 = dec.format(1234.56789);
System.out.println(s2);
DecimalFormat dec1 = new DecimalFormat("###,###.0000");//保留四个小数,不够补上0
String s1 = dec1.format(1245.56);
System.out.println(s1);
}
}
运行结果02:
示例代码03:
public class BigDecimalTest01 {
public static void main(String[] args) {
// 这个100不是普通的100,是精度极高的100
BigDecimal v1 = new BigDecimal(100);
// 精度极高的200
BigDecimal v2 = new BigDecimal(200);
// 求和
// v1 + v2; // 这样不行,v1和v2都是引用,不能直接使用+求和。
BigDecimal v3 = v1.add(v2);// 调用方法求和。
System.out.println(v3);//300
BigDecimal v4 = v2.divide(v1);
System.out.println(v4);//2
}
}
运行结果03: