java源码——两种格式日期的转换
这里要实现1981.07.30 格式和July 30.1981格式的日期的转换。
在输入时进行日期格式的识别,并且对字符串进行操作并且输出。
难点在于字符串格式的识别和月份的转换,我用了正则表达式匹配和字符串的裁剪转换为整形再在数组中取出对应月份做的。
字符串进行裁剪时要十分小心。同时,还要注意月份的转换的正确性。哈哈,以前很少使用正则表达式匹配呢。
不多说了,代码更多的是细心的书写,难度也不大。
上代码。
Main.java
package com.fuxuemingzhu.datetransfer.main; import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern; /**
* <p>
* Title: Main
* </p>
* <p>
* Description:根据两种不同的输入日期格式进行判断并且进行转换
* </p>
*
* @author fuxuemingzhu
*
* @email fuxuemingzhu@163.com
*
* @date 2014年11月24日 下午4:19:09
*/
public class Main { /**
* dateInput 输入的日期
*/
public static String dateInput; /**
* dateOutput 输出的日期
*/
public static String dateOutput; /**
* months 12个月份的英文名
*/
public static String[] months = { "January", "February", "March", "April",
"May", "June", "July", "August", "September", "October",
"November", "December" }; /**
* <p>
* Title: main
* </p>
* <p>
* Description:main()方法,程序的入口
* </p>
*
* @param args
*
*/
public static void main(String[] args) {
input();
output();
} /**
* <p>
* Title: input
* </p>
* <p>
* Description:输入需要计算的字符串
* </p>
*
*/
public static void input() {
System.out.println("提示:日期格式有1981.07.30和July 30.1981两种。");
System.out
.println("月的英文输入对照为:January,February,March,April,May,June,July,August,September,October,November,December.");
System.out.println("请输入需要转换的日期:");
Scanner scanner = new Scanner(System.in);
dateInput = scanner.nextLine();
scanner.close();
} /**
* <p>
* Title: judgeType
* </p>
* <p>
* Description:判断输入的日期格式类型,如果两张格式都不满足,则返回2,即输出错误
* </p>
*
* @return 1981.07.30 格式,输出0 July 30.1981格式输出1 错误输出2
*
*/
public static int judgeType() {
Pattern pattern1 = Pattern.compile("\\d{4,}\\.\\d{2,}\\.\\d{2,}");
Matcher matcher1 = pattern1.matcher(dateInput); boolean isMonth = false;
int returnType = 2;
if (matcher1.find()) {
String month = dateInput.substring(5, 7);
int monthInt = Integer.parseInt(month);
if (monthInt <= 12 && monthInt >= 1) {
returnType = 0;
}
} else {
try {
String month = dateInput.split(" ")[0].toString();
for (int i = 0; i < months.length; i++) {
if (months[i].equals(month)) {
isMonth = true;
break;
}
}
String yearAndMonth = dateInput.split(" ")[1].toString();
Pattern pattern2 = Pattern.compile("\\d{2,}\\.\\d{4,}");
Matcher matcher2 = pattern2.matcher(yearAndMonth);
if (isMonth && matcher2.find()) {
returnType = 1;
}
} catch (Exception e) {
returnType = 2;
}
}
return returnType; } /**
* <p>
* Title: num2Words
* </p>
* <p>
* Description:1981.07.30 格式,输出 July 30.1981格式
* </p>
*
* @param numString
* 1981.07.30 格式
*
*/
public static void num2Word(String numString) {
String year = numString.substring(0, 4);
String month = numString.substring(5, 7);
String day = numString.substring(8);
String monthWord = months[Integer.parseInt(month) - 1];
dateOutput = monthWord + " " + day + "." + year;
System.out.println(dateOutput);
} /**
* <p>
* Title: word2Num
* </p>
* <p>
* Description:输入 July 30.1981格式 输出1981.07.30 格式
* </p>
*
* @param wordString
* July 30.1981格式
*
*/
public static void word2Num(String wordString) {
String year = wordString.split(" ")[1].substring(3);
String monthWord = wordString.split(" ")[0].toString();
String day = wordString.split(" ")[1].substring(0, 2);
int monthInt = 0;
for (int i = 0; i < months.length; i++) {
if (months[i].equals(monthWord)) {
monthInt = i + 1;
break;
}
}
dateOutput = year + "." + monthInt + "." + day;
System.out.println(dateOutput);
} /**
* <p>
* Title: output
* </p>
* <p>
* Description:根据不同的日期格式进行输出
* </p>
*
*/
public static void output() {
if (judgeType() == 0) {
num2Word(dateInput);
} else if (judgeType() == 1) {
word2Num(dateInput);
} else {
System.err.println("输入日期有误!请按照提示的格式进行输入。");
}
}
}
正则匹配还是需要继续练一练的。
附上运行截图。
1. July 30.1981格式转为1981.07.30 格式
2. 1981.07.30 格式转为July 30.1981格式
3. 识别输入错误的日期格式
4. 识别输入错误的月份的英语单词
java源码——两种格式日期的转换的更多相关文章
- 【JDK命令行 一】手动编译Java源码与执行字节码命令合集(含外部依赖引用)
写作目标 记录常见的使用javac手动编译Java源码和java手动执行字节码的命令,一方面用于应对 Maven 和 Gradle 暂时无法使用的情况,临时生成class文件(使用自己的jar包):另 ...
- Java源码阅读的真实体会(一种学习思路)
Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈 ...
- Java 解析Excel(xls、xlsx两种格式)
Java 解析Excel(xls.xlsx两种格式) 一.环境 JDK 1.8 二.JAR 1.commons-collections4-4.1.jar 2.poi-3.9-20121203.jar ...
- Java源码阅读的真实体会(一种学习思路)【转】
Java源码阅读的真实体会(一种学习思路) 刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+ ...
- CTF-源码泄露-PHP备份文件的两种格式
参考大佬文章: https://www.cnblogs.com/yunqian2017/p/11515443.html https://blog.csdn.net/xy_sunny/article/d ...
- 24点扑克牌游戏——(含java源码)(GUI实现)
给出四个数字,要求,在其间添加运算符和括号,使得计算结果等于24. 括号的放置即为决定哪几个数先进行计算.所以,我们先确定首先进行计算的两个相邻的数,计算完成后,就相当于剩下三个数字,仍需要在它们之间 ...
- 如何阅读Java源码 阅读java的真实体会
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动. 源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比 ...
- Android反编译(一)之反编译JAVA源码
Android反编译(一) 之反编译JAVA源码 [目录] 1.工具 2.反编译步骤 3.实例 4.装X技巧 1.工具 1).dex反编译JAR工具 dex2jar http://code.go ...
- 如何阅读Java源码
刚才在论坛不经意间,看到有关源码阅读的帖子.回想自己前几年,阅读源码那种兴奋和成就感(1),不禁又有一种激动.源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心. 说到技术基础,我打个比方吧, ...
随机推荐
- 中兴交换机基础配置(备份、dhcp中继、monitor)
1. 备份配置 格式: copy tftp/sftp/ftp [vrf mng] root: 本地文件 远端文件 1. 通过tftp进行备份,vrf mng表示指定使用管理口链路连接 copy tft ...
- EXCEL-COUNTIF()统计符合区间上的值个数
=COUNTIF(D9:D21465,"<-0.2")+COUNTIF(D9:D21465,">0.2") #计算<-0.2或者>0. ...
- 巩固java第六天
巩固内容: HTML 空元素 没有内容的 HTML 元素被称为空元素.空元素是在开始标签中关闭的. <br> 就是没有关闭标签的空元素(<br> 标签定义换行). 在 XHTM ...
- Flink(二)【架构原理,组件,提交流程】
目录 一.运行架构 1.架构 2.组件 二.核心概念 TaskManager . Slots Parallelism(并行度) Task .Subtask Operator Chains(任务链) E ...
- 【c++】解析多文件编程的原理
其实一直搞不懂为什么头文件和其他cpp文件之间的关系,今晚索性一下整明白 [c++]解析多文件编程的原理 a.cpp #include<stdio.h> int main(){ a(); ...
- 【Linux】【Services】【VersionControl】Git基础概念及使用
1. 简介 1.1. 版本控制工具: 本地版本控制系统: 集中化版本控制系统:CVS,SVN 分布式版本控制系统: BitKeeper,Git 1.2. 官方网站: https://git-scm.c ...
- CentOS 6.4 下 Python 2.6 升级到 2.7
一开始有这个需求,是因为用 YaH3C 替代 iNode 进行校园网认证时,CentOS 6.4下一直编译错误,提示找不到 Python 的某个模块,百度了一下,此模块是在 Python2.7 以上才 ...
- Nginx 1.9.7.2 + PHP 5.6.18(FastCGI)在CentOS Linux下的编译安装
本文参考张宴的Nginx 0.8.x + PHP 5.2.13(FastCGI)搭建胜过Apache十倍的Web服务器(第6版)[原创]完成.所有操作命令都在CentOS 6.x 64位操作系统下实践 ...
- my38_MySQL事务知识点零记
从innodb中查看事务信息 show engine innodb status\G; ------------ TRANSACTIONS------------Trx id counter 3153 ...
- 【Windows】github无法访问/hosts文件只能另存为txt
因为我的github访问不了了,搜索解决方案为修改host文件 https://blog.csdn.net/curry10086/article/details/106800184/ 在hosts文件 ...