06_java 时间获取练习_Date\SimpleDateFormat\Calendar类练习
1.获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08
import java.text.SimpleDateFormat;
import java.util.Date; public class Test { public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss");
Date date = new Date();
String now = sdf.format(date);
System.out.println(now);
} }
2.把你的生日字符串表示转换为对应的日期对象.
比如2008-08-08转换成:2008年08月08号
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date; public class Test { public static void main(String[] args) {
String birthday = "2008-08-08";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
try {
Date date = sdf.parse(birthday);
String str = sdf.format(date);
System.out.println(str);
} catch (ParseException e) {
e.printStackTrace();
} }
}
3.500天后是几几年几月几日.
import java.util.Calendar;
import java.util.Date; public class Test { public static void main(String[] args) {
//500天后是几几年几月几日.
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE,500);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DATE);
System.out.println("500天后是:"+year+"年"+month+"月"+day+"日");
} }
4.编写一个校验用户名的程序,检测键盘录入的用户名是否合法 (正则表达式)
要求:必须以英文开头,只能包含英文,数字和`_`;最少6位,做多12位
import java.util.Scanner; public class Test { public static void main(String[] args) {
System.out.println("请输入用户名:");
Scanner sc = new Scanner(System.in);
String userName = sc.nextLine();
if(userName.matches("[a-zA-Z][a-zA-Z_0-9]{5,11}")) {
System.out.println("用户名合法..");
}else {
System.out.println("用户名不合法.....");
}
}
}
5.计算你活了多少天
package Task001; import java.text.SimpleDateFormat;
import java.util.Date; public class Test { public static void main(String[] args) {
try{
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date birthDay = sdf.parse("1993-5-18");
long birthTime = birthDay.getTime();
long now = System.currentTimeMillis();
long liveTime = now - birthTime;
long day = liveTime/1000/60/60/24;
System.out.println("你已经来到这个地球"+day+"天了....");
}catch(Exception e){
e.printStackTrace();
}
}
}
6.写代码验证使用SimpleDateFormat把日期转换为字符串创建SimpleDateFormat对象的时候,比较消耗程序的执行性能
a) 使用System的currentTimeMillis()方法获取当前操作系统的毫秒值,作用程序执行的开始时间,使用start变量接收
b) 需要测试执行性能的代码
c) 使用System的currentTimeMillis()方法获取当前操作系统的毫秒值,作用程序执行的结束时间,使用end变量接收
d) 计算代码执行花费的时间 end - start,输出代码执行消耗的时间
3. 在Test14类中提供一个静态方法testSimpleDataFormatInLoop(),在方法中
a) 创建日期(Date)对象 now
b) 写一个循环100000次的for循环
c) 在循环中
i. 创建SimpleDateFormat对象 df,并制定日期格式为yyyy-MM-dd
ii. 调用df的format(Date date),传入now
d) 在main方法中,需要测试执行的性能的代码处调用testSimpleDataFormatInLoop()方法
e) 记录程序执行的效率
4. 在Test14类,完整复制testSimpleDataFormatInLoop()方法
a) 改名为testSimpleDataFormatOutLoop
b) 把创建SimpleDateFormat的代码移动到循环外部
c) 在main方法中,注释调用testSimpleDataFormatInLoop();
d) 在语句下一行调用testSimpleDataFormatOutLoop方法
e) 运行程序,查看输出结果,并记录
5. 得出结论: 创建日期格式对象,确实比较消耗程序性能,所以在实际开发一般会写一个工具类专门处理,日期的格式化与解析.
步骤提示
import java.text.SimpleDateFormat;
import java.util.Date; public class Test { public static void main(String[] args) {
try {
long start = System.currentTimeMillis();
//testSimpleDataFormatInLoop();//447毫秒
testSimpleDataFormatOutLoop();//236毫秒
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date d = sdf.parse("2008-8-8");
long end = System.currentTimeMillis();
long useTime = end - start;
System.out.println("消耗了" + useTime + "毫秒");
} catch (Exception e) {
e.printStackTrace();
} } public static void testSimpleDataFormatInLoop(){
Date now;
try{
long time = System.currentTimeMillis();
for(int i = 0;i < 100000; i++ ){
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
now = sdf.parse("2018-3-12");
sdf.format(now);
}}catch(Exception e){
e.printStackTrace();
}
}
public static void testSimpleDataFormatOutLoop(){
Date now;
try{
long time = System.currentTimeMillis();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for(int i = 0;i < 100000; i++ ){
now = sdf.parse("2018-3-12");
sdf.format(now);
}}catch(Exception e){
e.printStackTrace();
}
}
}
7.使用正则表达式切割字符串
* 192.168.105.27 按照 . 号切割字符串
* 18 22 40 65 按照空格切割字符串
提示: 由于 . 号 在正则表达式中用于匹配除换行符以外的任意字符,会把字符串切的连渣都不剩,此处使用 . 号需要转义;
使用\\.作为切割使用正则表达式
public class Test { public static void main(String[] args) {
String str1 = "192.168.105.27";
String[] strs1 = str1.split("\\.");
for (int i = 0; i < strs1.length; i++) {
System.out.println(strs1[i]);
}
String str2 = "18 22 40 65"; String[] strs2 = str2.split("\\s+");
for (int i = 0; i < strs2.length; i++) {
System.out.println(strs2[i]);
}
}
}
8.有一段文本 " anglebaby 女 18 515151511 "
分别描述一个人的姓名 性别 年龄(int) 和QQ号码信息,完成如下需求:
1. 创建一个Person类,包含性别,性别,年龄和QQ号码属性,使用解析出来信息创建一个Person对象,并打印这个人信息
2. 并判断QQ号是否合法,匹配规则,全部都是数字,第一位非0,长度为5到12位.
Person类:
public class Student {
private String name;
private String sex;
private int age;
private String qq;
public Student() {
super();
}
public Student(String name, String sex, int age, String qq) {
super(); this.name = name;
this.sex = sex;
this.age = age;
this.qq = qq; } public int getAge() {
return age;
}
public String getName() {
return name;
}
public String getQq() {
return qq;
}
public String getSex() {
return sex;
}
public void setAge(int age) {
this.age = age;
}
public void setName(String name) {
this.name = name;
}
public void setQq(String qq) {
this.qq = qq;
}
public void setSex(String sex) {
this.sex = sex;
}
@Override
public String toString() {
System.out.println("Student [name=" + name + ", sex=" + sex + ", age=" + age + ", qq=" + qq + "]");
return "Student [name=" + name + ", sex=" + sex + ", age=" + age + ", qq=" + qq + "]";
} }
主方法:
public class Test { public static void main(String[] args) { String str = " anglebaby 女 18 515151511";
str.trim();
String[] strs = str.split("\\s+");
int age = Integer.parseInt(strs[2]);
Student s = new Student(strs[0],strs[1],age,strs[3]);
s.toString();
if(strs[3].matches("[1-9][0-9]{4,11}")){
System.out.println("qq合法....");
}else{
System.out.println("qq不合法....");
}
}
}
9.把字符串 "Hello12345World6789012" 中所有数字替换为 "#"
提示: 字符串类的replaceAll(String regex,string str)方法,使用str替换掉当前字符串中所有与正则表达式匹配的字符
public class Test {
public static void main(String[] args) {
String str = "Hello12345World6789012";
String newStr = str.replaceAll("\\d+", "#");
System.out.println(newStr);
}
}
06_java 时间获取练习_Date\SimpleDateFormat\Calendar类练习的更多相关文章
- 时间获取_Date\SimpleDateFormat\Calendar类
1.获取当前的日期,并把这个日期转换为指定格式的字符串,如2088-08-08 08:08:08 import java.text.SimpleDateFormat; import java.uti ...
- Java基础 与时间日期相关的类:System -Date -SimpleDateFormat -Calendar类 -解决后缀.000Z 的时区问题
笔记总结: /**与时间相关的类:System_Date_SimpleDateFormat_Calendar类 * 1.system 类下的currentTimeMillis() * 输出从1970年 ...
- day319 1、正则表达式的定义及使用 2、Date类的用法 3、Calendar类的用法
1.正则表达式的定义及使用2.Date类的用法3.Calendar类的用法 一.正则表达式 ###01正则表达式的概念和作用* A: 正则表达式的概念和作用* a: 正则表达式的概述* 正则表达式也是 ...
- Date、DateFormat和Calendar类的简单认识
第三阶段 JAVA常见对象的学习 Date.DateFormat和Calendar类的简单认识 Date类 Date:表示特定的瞬间,精确到毫秒. (一) 构造方法: Date():根据当前的默认毫秒 ...
- 使用 Date 和 SimpleDateFormat 类表示时间、Calendar类和Math类
一. Date 和 SimpleDateFormat类表示时间 在程序开发中,经常需要处理日期和时间的相关数据,此时我们可以使用 java.util 包中的 Date 类.这个类最主要的作用就是获取当 ...
- 时间日期相关类:Date类,DateFormat类&SimpleDateFormat类,Calendar类
日期相关类 1.Date类:日期时间类 A.构造方法 Date(): 根据当前系统时间创建日期对象 Date(Long time):根据传入的毫秒值时间创建日期对象 B.成员方法 Long get ...
- Java Calendar 类的时间操作
Java Calendar 类的时间操作 标签: javaCalendar时间Date 2013-07-30 17:53 140401人阅读 评论(7) 收藏 举报 分类: 所有(165) Java ...
- Calendar时间获取天,周,月,季度,年度时间段
Date类 Date类的大多数构造函数和方法都已经抛弃,只留下和毫秒有关的操作,目前常用的构造函数 常用方法 设置毫秒数 读取毫秒数 toString()打印结果 //创建日期对象,把当前的毫秒值转成 ...
- Java—包装类、Date和SimpleDateFormat、Calendar类
包装类 基本数据类型不能调用方法,功能简单,为了让基本数据类型也具备对象的特性,Java为每个基本数据类型提供了一个包装类,这样就可以像操作对象那样来操作基本数据类型. 基本类型和包装类之间的对应关系 ...
随机推荐
- Nginx学习笔记3--Nginx和PHP(fastCGI)的配置和优化
php和nginx的配置 server{ root html; listen 80; server_name a.com; index index.php index.html ; location ...
- return *this 与return this的区别
return *this返回当前对象的引用(也就是返回当前对象) return this返回当前对象的地址. #include <iostream> using namespace std ...
- linux下mount/unmount命令
格式:mount [-参数] [设备名称] [挂载点] 其中常用的参数有:-a 安装在/etc/fstab文件中类出的所有文件系统.-f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系 ...
- (十六)java中的String
String:字符串类型,是java中最常用的引用类型,String是不可变的,java.lang.String是由final修饰,此类不可被继承. String是不可变的,指的是字符串一旦创 ...
- 如何在BIOS中设置RAID?
随着价格的下降和相应主板的支持,目前SATA硬盘已经逐渐成为主流.但由于受芯片组和操作系统的影响,不少用户对SATA硬盘的使用及安装系统掌握不足,今天小编就给大家介绍一下SATA硬盘的日常应用技巧,希 ...
- javscript eval()的优缺点与web安全防范
要说JavaScript中最为强大的一个方法便是eval()方法呢,为何如此说呢?因为它就像是一个JavaScript解析器,也就是说它的参数就是一段js代码所构成的字符串,当执行这个函数的时候,会把 ...
- Linux性能分析工具top命令详解
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,常用于服务端性能分析. top命令说明 [www.linuxidc.com@linuxidc-t-tomcat-1 ...
- RobotFramework自动化测试框架的基础关键字(三)
1.1.1 如何定义一个字典 此处我们说的字典,其实就等同于python语言中的字典,和列表一样,字典也是python语言中非常常用的一种数据结构,也类似于Java 语言中的Map. 在 ...
- [HNOI2011]XOR和路径 && [HNOI2013]游走
[HNOI2011]XOR和路径 题目大意 具体题目:戳我 题目: 给定一个n个点,m条边的有重边.有自环的无向图,其中每个边都有一个边权. 现在随机选择一条1到n的路径,路径权值为这条路径上所有边权 ...
- 2017angular、vue、react热度
中国,过去一年: 中国,过去五年: 全球,过去一年: 全球,过去五年: 其他相关: 数据来源自:Google Trends