JAVA 中:

坑一:
  replace没有用对象进行接收。直接使用
  dateStr.replaceAll("\\/", "-");
  是不行的,至少得加上 "dateStr = " 。
坑二:
  正则匹配斜杠
  \\d{4}\\\\\\d{1,2}\\\\\\d{1,2} 2016\05\05
  中间得加6个斜杠转义。自行体会吧,都是泪啊,太隐蔽了……
坑三:
  测试的时候没有转义斜杠

  dealVenueDate("2016\\06\\07"),defaultDatePattern
  基本的坑,没留意掉进去了

坑四:

  正则匹配中文,要使用Unicode。不烦述。

  
  
public static String defaultDatePattern = "yyyy-MM-dd";

	public Date dealVenueDate(String dateStr){
Date date = null;
String temp = "";
if(StringUtils.isBlank(dateStr)){
return date;
}
String format = "\\d{4}-\\d{2}-\\d{2}|\\d{4}\\/\\d{1,2}\\/\\d{1,2}|\\d{4}\\\\\\d{1,2}\\\\\\d{1,2}";// 2016-05-05 2016/05/05
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(dateStr); String format1 = "\\d{1,2}\\/\\d{1,2}\\/\\d{2}";// 5/5/16 05/05/16
Pattern pattern1 = Pattern.compile(format1);
Matcher matcher1 = pattern1.matcher(dateStr); // String format2 = "\\d{1,2}\\[月]\\d{1,2}\\[日]";// 5月5日
// Pattern pattern2 = Pattern.compile(format2);
// Matcher matcher2 = pattern2.matcher(dateStr);
try {
if(matcher.matches()){
if(dateStr.contains("\\")){
dateStr = dateStr.replaceAll("\\\\", "-");
}
if(dateStr.contains("/")){
dateStr = dateStr.replaceAll("\\/", "-");
}
date = parse(dateStr,defaultDatePattern);
}else if(matcher1.matches()){
temp = dateStr.substring(dateStr.length()-2,dateStr.length());
String midTemp = dateStr.substring(0,dateStr.length()-3);
midTemp = midTemp.replaceAll("\\/", "-");
temp = "20" + temp + "-" + midTemp;
date = parse(temp,defaultDatePattern);
}else if(dateStr.indexOf("月") > 0 && dateStr.indexOf("日") > 0){//5月5日
temp = dateStr.substring(0,dateStr.indexOf("日"));
String[] data = temp.split("月");
if(data != null && data.length == 2){
Calendar cal = Calendar.getInstance();
String year = cal.get(Calendar.YEAR) + "";
temp = year + "-" + data[0] + "-" + data[1];
date = parse(temp,defaultDatePattern);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return date ;
} public static Date parse(String strDate, String pattern) throws ParseException {
SimpleDateFormat df = new SimpleDateFormat(pattern);
return df.parse(strDate);
} public static String format(Date date, String pattern) {
String returnValue = "";
if (date != null) {
SimpleDateFormat df = new SimpleDateFormat(pattern);
returnValue = df.format(date);
}
return returnValue;
} public static void main(String[] args) {
// SimpleDateFormat df = new SimpleDateFormat(defaultDatePattern);
// try {
// System.out.println("=========aaaaaa========"+df.parse("2016\\06\\07"));
// } catch (ParseException e) {
// // TODO Auto-generated catch block
// e.printStackTrace();
// }
// System.out.println("=========aaaaaa========"+format(dealVenueDate("2016\\06\\07"),defaultDatePattern));
// System.out.println("=========aaaaaa========"+format(dealVenueDate("2016/06/07"),defaultDatePattern));
// System.out.println("=========aaaaaa========"+format(dealVenueDate("6/7/16"),defaultDatePattern));
// System.out.println("=========aaaaaa========"+format(dealVenueDate("5月10日"),defaultDatePattern));
}

  

曾经跳过的坑------replace、替换斜杠反斜杠、时间格式化处理的更多相关文章

  1. 斜杠反斜杠,去空格\xa0,连接函数join()

    1斜杠反斜杠 斜杠:/.反斜杠:\. 反斜杠\,在windows系统中用来表示目录. 而在unix系统中,/表示目录.由于web遵循unix命名,所以在网址(URL)中,/表示目录. 在unix系统中 ...

  2. 加特殊符号星号斜杠反斜杠/* \ */ !important等让css实现兼容各个浏览器的技巧的代码

       在编写css样式表的时候常常会碰到一写浏览器兼容的问题,象是不同内核的浏览器显示就不一定相同,不同版本的的浏览器也会产生上下兼容的问题,如何解决这些问题成了我们苦恼的问题,如果你对css hac ...

  3. Linux/Window 正斜杠 反斜杠

    文件目录结构: Linux 是用正斜杠 目录名区分大小写 Window 是用反斜杠 目录名不区分大小写

  4. Sed替换 内容带反斜杠(/)

    sed "s#XXXX#${NAME}#" $MAIL_CONTENT > /tmp/MAIL_CONTENT1.tmp -----不论什么字符,紧跟着s命令的都被认为是新的 ...

  5. js替换字符中的斜杠反斜杠

    var reg=/\\|\//g; var a="a\a\\a/b" alert(a.replace(reg,"-"));

  6. Unix Shell中单引号、双引号字符、反斜杠、反引号的使用[转]

    在执行shell脚本的时候,shell将会对脚本中的行进行解释,然后执行:对于一些特殊处理的句子,我们可以使用引号或者反斜线来避免shell解释执行之.如下,当在命令行中输入:echo *child. ...

  7. 每日linux命令学习-引用符号(反斜杠\,单引号'',双引号"")

    引用符号在解析器中保护特殊元字符和参数扩展,其使用方法有3种:反斜杠(\),单引号(’‘),双引号(“”). 单引号和双引号必须匹配使用,均可在解析器中保护特殊元字符和通配符,但是单引号(硬转义)主要 ...

  8. shell脚本特殊符号——单引号、双引号、反引号、反斜杠

    1. 单引号 ( '' ) 被单引号用括住的内容,将被视为单一字串. 2. 双引号 ( " " )  被双引号用括住的内容,将被视为单一字串.双引号只要求忽略大多数,具体说,括在双 ...

  9. Shell脚本中的特殊字符(美元符、反斜杠、引号等)作用介绍

    Shell中的特殊字符有 1.$ 美元符 2.\ 反斜杠 3.` 反引号 4." 双引号 5.< ,>;,*,?,[,] 下面我一一举列说明 一.$符号 1.echo $? 显示 ...

随机推荐

  1. mock带参数的构造函数

    @RunWith(PowerMockRunner.class)@PrepareForTest(Helper.class)//1.添加要初始化的类,就是构造函数所在的类public class Help ...

  2. phpexcel图形图表(二)图形

    原创文章,转载请注明出处:http://www.cnblogs.com/phpgcs 本篇文章实例演示如上图,画3种图形以及多sheet操作等 先回忆下第一篇中line图形的API调用步骤: 1,引入 ...

  3. Java中常见数据结构

    1:集合 Collection(单列集合) List(有序,可重复) ArrayList 底层数据结构是数组,查询快,增删慢 线程不安全,效率高 Vector 底层数据结构是数组,查询快,增删慢 线程 ...

  4. Python 字典初始化dict()和{}

    参考:https://doughellmann.com/blog/2012/11/12/the-performance-impact-of-using-dict-instead-of-in-cpyth ...

  5. 集合Map多对多映射(使用xml文件)

    我们可以使用set,bag,map等来映射多对多关系.在这里,我们将使用map来进行多对多映射. 在这种情况下,将创建三个表. 多对多映射示例 我们需要创建以下文件来映射map元素.首先创建一个项目: ...

  6. makefile编写---单个子目录编译自动变量模板ok

    1.自动化变量通配符http://blog.sina.com.cn/s/blog_7c95e5850101b38l.html 2.wildcard 使用http://blog.csdn.net/lia ...

  7. 探讨把一个元素从它所在的div 拖动到另一个div内的实现方法

    故事背景: 接到一个新需求,要求用vue搞,主要是拖动实现布局,关键点有:单个组件拖动,一行多列里面的组件拖动,  单个组件可以拖入一行多列里, 单个组件的拖动好实现,关键是把一个组件拖动到另一个类似 ...

  8. Unity3D学习笔记——NGUI使用常见问题

    一:在Scene中右键创建UI组件. 首先要确定NGUI中的红框能看见,我的就是之前无法现实红框,所以右键无法新建UI组件, 原因是:UIPanel没启用. 启用方法: 启用前和启用后NGUI界面对比 ...

  9. Spring 中的 Resource和ResourceLoader

    Spring 内部框架使用org.springframework.core.io.Resource接口作为所有资源的抽象和访问接口.Resource接口可以根据资源的不同类型,或者资源所处的不同场合, ...

  10. Java 基础巩固:装箱拆箱 你真的熟悉吗

    先考两道题: Integer a1 = 300; Integer a2 =300; System.out.print(a1 == a2); Integer b1 = 1; Integer b2 = 1 ...