计算出生日期和年龄

根据月龄计算出生日期
public class date {
    public static void main(String[] args) {

        Calendar c = Calendar.getInstance();
        c.add(Calendar.YEAR, 0);
        c.add(Calendar.MONTH, -1);
        c.add(Calendar.DAY_OF_MONTH, 1);//-1
        //常见的日期和时间组合的格式
        /**
         * %tF    “年-月-日”格式(4位年份)    2019-06-09
         * %tD    “月/日/年”格式(2位年份)    06/09/19
         * %tc    全部日期和时间信息    星期日 六月 09 22:17:56 CST 2019
         * %tr    “时:分:秒 PM(AM)”格式(12时制)    10:41:47 下午
         * %tT    “时:分:秒”格式(24时制)    22:41:47
         * %tR    “时:分”格式(24时制)    22:42
         */
        String birthday = String.format("%tF", c.getTime());
//        System.out.println(c.getTime());

        System.out.println(birthday);
    }


}

根据生日计算年龄

public class CalBabyJoda {

    private final static String birthday = "2012-3-10";
//    private final static String birthday = "2012-3-10 08:20:55";

    public static void main(String[] args) {
        while(true){
            Scanner s = new Scanner(System.in);
            System.out.println("########################################");
            DateTimeFormatter format1 = DateTimeFormat .forPattern("yyyy-MM-dd HH:mm:ss");
            DateTimeFormatter format2 = DateTimeFormat .forPattern("yyyy-MM-dd");
            DateTime startDateTime = DateTime.parse(birthday, format2);
            System.out.println("宝宝来到这个世界已经");
            calDateToDay(startDateTime,new DateTime());
            System.out.println("如选择其它日期请输入(格式例如:2012-11-08 14:24:54或着2012-11-08)");
            System.out.println("########################################");
            String endDate = s.nextLine();
            DateTime endDateTime = null;
            try{
                endDateTime = DateTime.parse(endDate,format1);
            }catch(Exception e){
                try{
                    endDateTime = DateTime.parse(endDate,format2);
                }catch(Exception e1){
                    System.out.println("输入格式错误!请重新输入.");
                    continue;
                }
            }
            System.out.println("宝宝从出生到" + endDateTime.toString("yyyy-MM-dd HH:mm:ss") + "已经");
            calDateToDay(startDateTime,endDateTime);
        }
    }

    public static void calDateToDay(DateTime startDateTime,DateTime endDateTime){

        LocalDate start=new LocalDate(startDateTime);
        LocalDate end=new LocalDate(endDateTime);
        Days days = Days.daysBetween(start, end);
        int intervalDays = days.getDays();
        int intervalHours = endDateTime.getHourOfDay() - startDateTime.getHourOfDay();
        int intervalMinutes = endDateTime.getMinuteOfHour() - startDateTime.getMinuteOfHour();
        int intervalSeconds = endDateTime.getSecondOfMinute() - startDateTime.getSecondOfMinute();


        if(intervalSeconds < 0){
            intervalMinutes = intervalMinutes -1;
            intervalSeconds = 60 + intervalSeconds;
        }

        if(intervalMinutes < 0){
            intervalHours = intervalHours -1;
            intervalMinutes = 60 + intervalMinutes;
        }

        if(intervalHours < 0){
            intervalDays = intervalDays -1;
            intervalHours = 24 + intervalHours;
        }

        System.out.println(intervalDays + "天" + intervalHours +
                "小时" + intervalMinutes + "分钟" + intervalSeconds + "秒");
        System.out.println("############################");
    }

}

日期和时间字符串格式化

1、常用的日期格式转换符

转换符 说明 示例
%te 一个月中的某一天(1~31) 2
%tb 指定语言环境的月份简称 Feb(英文)、二月(中文)
%tB 指定语言环境的月份全称 February(英文)、二月(中文)
%ta 指定语言环境的星期几简称 Mon(英文)、星期一(中文)
%tA 指定语言环境的星期几全称 Monday(英文)、星期一(中文)
%tc 包括全部日期和时间信息 星期日 六月 09 22:17:56 CST 2019
%tm 月份 06
%td 一个月中的第几天(01~31) 09
%tj 一年中的第几天(001~366) 160
%ty 2位年份 19
%tY 4位年份 2019

2、时间格式化转换符

转换符 说明 示例
%tH 2位数字的24时制的小时(00~23) 02
%tk 2位数字的24时制的小时(0~23) 2
%tI(大写i) 2位数字的12时制的小时(00~23) 02
%tl(小写L) 2位数字的12时制的小时(0~23) 2
%tM 2位数字的分钟(00~59) 02
%tS 2位数字的秒数(00~60) 02
%tL 3位数字的毫秒数(000~999)) 902
%tN 9位数字的微秒数(000000000~999999999) 064000000
%tp 指定语言环境下上午或下午标记 下午(中文)、pm(英文)
%tz 相对于GMT RFC 82 格式的数字时区偏移量 +0800
%tZ 时区缩写形式的字符串 CST
%ts 1970-01-01 00:00:00至现在经过的秒数 1560090985
%tQ 1970-01-01 00:00:00至现在经过的毫秒数 1560090985470

3、常见的日期和时间组合的格式

转换符 说明 示例
%tF “年-月-日”格式(4位年份) 2019-06-09
%tD “月/日/年”格式(2位年份) 06/09/19
%tc 全部日期和时间信息 星期日 六月 09 22:17:56 CST 2019
%tr “时:分:秒 PM(AM)”格式(12时制) 10:41:47 下午
%tT “时:分:秒”格式(24时制) 22:41:47
%tR “时:分”格式(24时制) 22:42

DAY_OF_MONTH:一个月的第几天,也就是口头所说的几号,比如值为1,就代表是1号;
DAY_OF_WEEK:星期几,这个值在Calendar中有对应的常量比如,星期天就用:Calendar.SUNDAY,星期一就是Calendar.MONDAY;
DAY_OF_WEEK_IN_MONTH:这个月的第几周,配合DAY_OF_WEEK,就知道这个月的具体那一天,外国人就喜欢 几月的第几周的星期几 这样的日期表示方式;
DAY_OF_YEAR:一年当中的第几天

参考:

https://www.cnblogs.com/yinzhengjie/p/8870958.html

猜你喜欢

转载自www.cnblogs.com/appium/p/12213471.html