题目1 --日期

借助随机数,创建一个从1995.1.1 00:00:00 到 1995.12.31 23:59:59 之间的随机日期

package date;import java.util.Date;public class TestDate {public static void main(String[] args) {long second = 1000;long minute = 60*second;long hour = minute * 60;long day = hour*24;long year = day * 365;long year1995Start  = (1995-1970) * year;long leapDay = (1995-1970)/4*day; //每隔4年有一个润日year1995Start+=leapDay;long eightHour = hour*8; //8个小时的毫秒数,因为从0毫秒对应的是1970.1.1 08:00:00year1995Start-=eightHour;Date dStart = new Date(year1995Start);System.out.println("1995年第一天:"+dStart);long year1995End = year1995Start + year - 1;Date dEnd = new Date(year1995End);System.out.println("1995年最后一天:"+dEnd);long randomTime = (long) (Math.random()*(year-1) + year1995Start);Date dRandom = new Date(randomTime);System.out.println("1995年这一年中的一个随机时间:" + dRandom);}
}

笔记

SimpleDateFormat sdf =new SimpleDateFormat("yyyy/MM/dd HH:mm:ss" );
String str = "2016/1/5 12:12:12";
Date d = sdf.parse(str);
字符串对象有一个parse(str) 可以转成Date 对象

Date对象转字符串:
SimpleDateFormat sdf =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss SSS" );
Date d= new Date();
String str = sdf.format(d);

题目2--日期格式化

准备一个长度是9的日期数组
使用1970年-2000年之间的随机日期初始化该数组
按照这些日期的时间进行升序排序
比如 1988-1-21 12:33:22 就会排在 1978-4-21 19:07:23 前面,因为它的时间更小,虽然日期更大

package date;import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class TestDate {public static void main(String[] args) {int yearStart = 1970;int yearEnd = 2000;Date[] ds = new Date[9];for (int i = 0; i < ds.length; i++) {ds[i] = getRandomDate(yearStart, yearEnd);}System.out.println("得到的随机日期数组:");for (int i = 0; i < ds.length; i++) {System.out.print(toString(ds[i])+"\t");if(2==i%3)System.out.println();}//选择法排序for (int j = 0; j < ds.length-1; j++) {for (int i = j+1; i < ds.length; i++) {String strTimeI = toString(ds[i],"HHmmss");String strTimeJ = toString(ds[j],"HHmmss");int lTimeI = Integer.parseInt(strTimeI);int lTimeJ = Integer.parseInt(strTimeJ);if( lTimeI<lTimeJ  ){  Date temp = ds[j];ds[j] = ds[i];ds[i] = temp;}}}      System.out.println("排序后的随机日期数组:");for (int i = 0; i < ds.length; i++) {System.out.print(toString(ds[i])+"\t");if(2==i%3)System.out.println();}}public static String toString(Date d) {return toString(d, "yyyy-MM-dd HH:mm:ss");}public static String toString(Date d, String format) {SimpleDateFormat sdf = new SimpleDateFormat(format);return sdf.format(d);}private static Date getRandomDate(int yearStart, int yearEnd) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy");try {Date dStart = sdf.parse(String.valueOf(yearStart)); // 1970Date dEnd = sdf.parse(String.valueOf(yearEnd + 1)); // 2001 不是 2000,要在2001的基础上减少以毫秒,才表示2000最后一刻long timeStart = dStart.getTime();long timeEnd = dEnd.getTime() - 1;long timeRandom = (long) (timeStart + Math.random() * (timeEnd - timeStart));return new Date(timeRandom);} catch (ParseException e) {// TODO Auto-generated catch blocke.printStackTrace();}return null;}
}

笔记:可以通过日历对象得到日期对象

//采用单例模式获取日历对象Calendar.getInstance();
Calendar c = Calendar.getInstance();

    //通过日历对象得到日期对象Date d = c.getTime();

日期对象
add方法,在原日期上增加年/月/日
set方法,直接设置年/月/日

题目3--Calendar

找出下个月的倒数第3天是哪天

package date;import java.text.SimpleDateFormat;
//
import java.util.Calendar;
import java.util.Date;public class TestDate {private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");public static void main(String[] args) {Calendar c = Calendar.getInstance();System.out.println("今天是:" + format( c.getTime()));//先翻到下下个月c.add(Calendar.MONTH,2);//设置到月初c.set(Calendar.DATE,1);//再往回翻3天c.add(Calendar.DATE,-3);Exception e;System.out.println("下个月倒数第三天是:" + format(c.getTime()));}private static String format(Date time) {return sdf.format(time);}
}

转载于:https://www.cnblogs.com/czy16/p/8963488.html

java基础--日期--练习集锦相关推荐

  1. 10.66道经典的Java基础面试题集锦为何晴空

    "JavaPlanformStandardEdition"是Java语言的标准平台技术,是所有Java开发的语言基础,更是大数据.分布式开发思想建模的初期,此阶段的Java语义.语 ...

  2. 经典的Java基础面试题集锦

    问题:如果main方法被声明为private会怎样? 答案:能正常编译,但运行的时候会提示"main方法不是public的". 问题:Java里的传引用和传值的区别是什么? 答案: ...

  3. java基础-日期处理

    参考博客https://www.cnblogs.com/superdrew/p/10701177.html jdk8新方法 https://www.cnblogs.com/zl520/p/995790 ...

  4. ChatGPT 整理的 “Java基础面试题集锦:完全版“ (1)

    user: 你学习编程的目的是什么?学习编程最快的办法是什么? assistant: 我作为AI语言模型并不会有个人目的,但是就一般用户而言,学习编程的目的可以有很多种,比如为了就业.提高自己的技能水 ...

  5. Java 基础——日期(Date)的解析

    M:月份,m:分钟 MMM:英文的月份简写,如 Jan 表示一月,May:表示三月 MM:阿拉伯数字的月份,01-12 其他不区分大小写,无歧义 SimpleDateFormat 一般需要实例化两个S ...

  6. JAVA基础面试题目

    精选30道Java笔试题解答 http://www.cnblogs.com/lanxuezaipiao/p/3371224.html 经典的Java基础面试题集锦 http://www.codeceo ...

  7. Java基础篇(04):日期与时间API用法详解

    本文源码:GitHub·点这里 || GitEE·点这里 一.时间和日期 在系统开发中,日期与时间作为重要的业务因素,起到十分关键的作用,例如同一个时间节点下的数据生成,基于时间范围的各种数据统计和分 ...

  8. java基础系列十七(时间日期转换)

    目录 一.概述 二.基础知识 2.1 时区 2.2 格林威治时间 2.3 时间戳 三.Date/Calendar/SimpleDateFormat 3.1 Date 3.2 Calendar 3.3 ...

  9. Java基础知识(二)(Object类的常用方法、日期时间类、System类、StringBuilder类、包装类、Collection集合、Iterator迭代器、泛型、list集Set接口...)

    文章目录 Java基础知识(二) 1.Object类的常用方法 1.1 toString方法 1.2 equals方法 1.3 Objects类 2.日期时间类 2.1 Date类 2.2 DateF ...

最新文章

  1. 如何在Mac环境下搭建svn服务器端环境
  2. 谷歌推出TFQ,一个可训练量子模型的机器学习框架
  3. OpenCASCADE:Modeling Data之几何实用程序
  4. Spring Cloud 服务注册与发现 [ eureka ]
  5. ASP.NET之通过JS向服务端(后台)发出请求(__doPostBack is undefined)
  6. 从Photoshop无法启动DeNoise AI Mac作为插件的解决办法
  7. 一致性hash算法的应用研究学习
  8. vue中如何实现pdf文件预览?
  9. 用AI为金融行业赋能 一览群智发布金融行业智能产品
  10. fcm算法matlab实现,fcm算法matlab
  11. 京东智联云贪心科技:图卷积神经网络在推荐系统的应用
  12. 音乐类软件LoveMusic开发(三)----登录界面
  13. 胡侃学习(理论)计算机-From 南大小百合
  14. Java8新特性 Stream流式思想(三)
  15. 宏正自动科技推出首款触摸屏LCD KVM多电脑切换器
  16. Scratch案例——画彩虹
  17. 上海税务局发布2023年第1号文件,全电发票开票试点即将全面扩围!
  18. 云麦体脂秤华为体脂秤_华为智能体脂秤(蓝牙版),会是良心之选吗?
  19. tplink作为无线交换机使用
  20. Unity 之 ShaderGraph 实现自发光和能量护盾效果入门级教程

热门文章

  1. 电大计算机应用,(2016年电大)电大全国计算机应用考试网考.doc
  2. linux 脚本 符号,Shell脚本 入门 —— 符号篇
  3. Dijkstra(迪杰斯特拉)算法简介
  4. Python基础学习笔记--字符串、列表
  5. Eigen(1):Matrix模板类
  6. C指针9:指针数组(即数组中的每个元素都是指针)
  7. 数据结构与算法(3-1)栈(顺序栈、两栈共享空间、链栈、栈的计算器)
  8. 【面向对象编程】(2) 类属性的定义及使用;__repr__()方法
  9. java me sdk_Java ME SDK 3.0不运行的问题及解决
  10. memcpy()内存拷贝和赋值操作效率测试