zoukankan      html  css  js  c++  java
  • 时间获取_DateSimpleDateFormatCalendar类

     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);
        }
    
    }
    View Code

     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();
            }
        
        }
    }
    View Code

     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+"日");
        }
    
    }
    View Code

     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("用户名不合法.....");
            }
        }
    }
    View Code

     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();
            }
        }
    }
    View Code

     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();
            }
        }
    }
    View Code

     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]);
            }
        }
    }
    View Code

     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 + "]";
        }
        
    }
    View Code

      主方法:

    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不合法....");
            }
        }
    }
    View Code

     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);
        }
    }
    View Code
  • 相关阅读:
    自建 IPA 分发平台
    一个优雅的占位图解决方案。适用于 UITableView 和 UICollectionView。
    Vuejs2.0购物车和地址选配学习笔记
    UIWebView 加 MJRefresh 同时解决底部黑影问题
    UIWebView 不自动全屏播放视频
    左右分页按钮的集合视图控件。用于快速编写出集合视图上分页多按钮点击事件!
    课程总结
    IO流实训
    事件处理
    变色
  • 原文地址:https://www.cnblogs.com/YangGC/p/8559334.html
Copyright © 2011-2022 走看看