Java-日期类,正则实验

Posted 康小庄

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java-日期类,正则实验相关的知识,希望对你有一定的参考价值。

1. 随机产生两个日期时间,输入按时间先后顺序输出

public class RandomDate 

	@SuppressWarnings("deprecation")
	public static void main(String[] args) throws ParseException 
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		Date date1 = randomDate("2001-08-30 10:00:00");
		Date date2 = randomDate("2001-08-30 09:00:00");
		String formatDate1 = sdf.format(date1);
		String formatDate2 = sdf.format(date2);
		// 直接比较时间戳即可
		if (date1.getTime() > date2.getTime()) 
			System.out.println(formatDate2);
			System.out.println(formatDate1);
		 else 
			System.out.println(formatDate1);
			System.out.println(formatDate2);
		
	

	/**
	 * 
	 * @Title: randomDate
	 * @Description: 根据指定字符串创建随机时间
	 * @param: @param  str
	 * @param: @return Date
	 * @param: @throws ParseException
	 * @author: KangXiaoZhuang
	 * @email: ITkxz0830@163.com
	 */
	public static Date randomDate(String str) throws ParseException 
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		long endTime = System.currentTimeMillis();
		// 指定时间 先转换成Date再转换为时间戳
		long startTime = sdf.parse(str).getTime();
		// 获取一个随机数
		long random = (long) (Math.random() * (endTime - startTime) + startTime);
		// 根据随机数来创建一个新的日期
		Date randomDate = new Date(random);
		// 返回randomDate
		return randomDate;
	

2.定义一个方法自己实现toBinaryString方法的效果,将一个十进制整数转换成字符串表示的二进制

public class MytoBinaryString 

	public static void main(String[] args) 
		System.out.println("输入一个数,转为二进制字符串!");
		Scanner scanner = new Scanner(System.in);

		String binaryString = toBinaryString(scanner.nextInt());

		System.out.println(binaryString);
	

	/**
	 * 
	 * @Title: toBinaryString
	 * @Description: 数字转为二进制
	 * @param: @param n
	 * @author: KangXiaoZhuang
	 * @email: ITkxz0830@163.com
	 */
	public static String toBinaryString(int n) 
		int mod = 0;
		// 创建栈来存储余数
		Deque<Integer> stack = new ArrayDeque<>();
		do 
			// 获取余数
			mod = n % 2;
			// stack.push(mod);
			stack.addFirst(mod);
			// 获取商
			n = n / 2;
		 while (n > 0);
		return stack.toString();
	

3.请使用代码实现计算你活了多少天的方法,要求方法的输入参数为年月日的字符串,如“1988年12月13日”

public class CountDay 

	public static void main(String[] args) throws ParseException 

		// 1.时用Scanner类中的方法next,获取出生日期
		Scanner scanner = new Scanner(System.in);
		System.out.println("请输入你的出生日期,格式:yyyy-MM-dd");
		count(scanner.next());
	

	/**
	 * 
	 * @Title: count
	 * @Description: 计算天数
	 * @param: @param  str
	 * @param: @throws ParseException
	 * @author: KangXiaoZhuang
	 * @email: ITkxz0830@163.com
	 */
	public static void count(String str) throws ParseException 

		// 2.时用DateFormat类中的方法parse,把字符串得出生日期,解析为Date格式的出生日期
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

		// 3.把Date格式的出生日期转换为毫秒值
		Date birthdayDate = sdf.parse(str);

		long birthdayDateTime = birthdayDate.getTime();

		// 4.获取当前的日期,转换为毫秒值
		long todayTime = new Date().getTime();

		// 5.使用当前日期的毫秒值 - 出生日期的毫秒值
		long time = todayTime - birthdayDateTime;

		// 6.把毫秒值转换为天(s/1000/60/60/24)
		long day = time / 1000 / 60 / 60 / 24;
		System.out.println("你已经出生了" + day + "天");
	

4.假设你的出生年月日为:2000-11-11,请用字符串表示这个数据,并将其转换为:2000年11月11日

public class StirngToDate 

	public static void main(String[] args) throws ParseException 
		Scanner sc = new Scanner(System.in);
		System.out.println("请输入你的出生年月:");
		String birthDate = sc.next();
		SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
		Date d = sdf.parse(birthDate);
		System.out.println("你的出生年月为:" + new SimpleDateFormat("yyyy年MM月dd日").format(d));
		sc.close();
	

5.自己实现parseInt方法的效果,将字符串形式的数据装换成整数

要求:(1)最少一位,最多10位;
(2)0不能开头;
(3)字符串中只能是数字,不能有其他字符,否则显示数据格式有误

public class StringToInt 

	public static void main(String[] args) 
		boolean flag = true;
		while (flag) 
			System.out.println("请输入字符串:\\n");
			Scanner sc = new Scanner(System.in);
			String str = sc.nextLine();
			if (chcek(str)) 
				int val = Integer.parseInt(str);
				System.out.println("转换后的整数:" + val);
				flag = false;
				break;
			
		
	

	/**
	 * 
	 * @Title: chcek
	 * @Description: 校验输入的字符串是否匹配要求
	 * @param: @param  str
	 * @param: @return
	 * @author: KangXiaoZhuang
	 * @email: ITkxz0830@163.com
	 */
	public static boolean chcek(String str) 
		if (str.matches("^0\\\\d*$")) 
			System.err.println("不能以0开头");
			return false;
		 else if (!str.matches("\\\\d*")) 
			System.err.println("数据格式有误!只能输入数字");
			return false;
		 else if (!str.matches("^\\\\d1,10$")) 
			System.err.println("最少1位,最多10位");
			return false;
		
		return true;
	

6. 请把下面文本中的电话、邮箱、手机号、热线电话都爬取出来

“欢迎来到南京XX学院学习,
电话:18512516785,18512508079,
或者联系邮箱:boniu@cucn.cn,
座机电话:025-36517899,025-98951256,
邮箱:bozai@cucn.cn,
热线电话:400-618-8080,400-618-6000,400-618-4000”

public class RegexData 
	public static void main(String[] args) 
		String s1 = "欢迎来到南京XX学院学习,电话:18512516785,18512508079" + "或者联系邮箱:baaaiu@cucu.cn"
				+ "座机电话:025-36517899,025-98951256," + "邮箱:bozai@cucu.cn"
				+ "热线电话:400-618-8080,400-618-6000,400-618-4000";
		String regex = "(0\\\\d2,6-?\\\\d5,20)|(1[3-9]\\\\d9)|"
				+ "(\\\\w1,30@[0-9a-zA-z]2,20(\\\\.[0-9a-zA-Z]2,20)1,2)|" + "(400-?\\\\d3,20-?\\\\d3,20)";
		Pattern pattern = Pattern.compile(regex);
		Matcher matcher = pattern.matcher(s1);
		while (matcher.find()) 
			System.out.println(matcher.group());
		
	

以上是关于Java-日期类,正则实验的主要内容,如果未能解决你的问题,请参考以下文章

Java基础14----正则表达式Math类System类BigInteger日期类

Java基础14----正则表达式Math类System类BigInteger日期类

Java实验项目三——面向对象定义职工类和日期类

js正则表单验证汇总,邮箱验证,日期验证,电话号码验证,url验证,信用卡验证,qq验证

huTool--工具类常用方法

android经常使用正则工具类