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. Spring Boot MongoDB JPA 简化开发

    使用SpringBoot提供的@Repository接口,可以完成曾经需要大量代码编写和配置文件定制工作.这些以前让新手程序员头疼,让有经验的程序员引以为傲的配置,由于框架的不断完善,变得不那么重要, ...

  2. sessionstorage:本地临时存储

    HTML5 web存储有两个重要对象: localStorage - 没有时间限制的数据存储 sessionStorage - 针对一个 session 的数据存储(关闭窗口,存储的数据清空) 一般涉 ...

  3. jfinal 使用类里的方法

    package demo; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; imp ...

  4. 第一百九十三节,jQuery EasyUI,Draggable(拖动)组件

    Draggable(拖动)组件 学习要点: 1.加载方式 2.属性列表 3.事件列表 4.方法列表 本节课重点了解 EasyUI 中 Draggable(拖动)组件的使用方法,这个组件不依赖于其 他组 ...

  5. Android 图片压缩的方法大全

    public static Bitmap revitionImageSize(String path) throws IOException { BufferedInputStream in = ne ...

  6. ps -ef | grep java 查看所有关于java的进程

    ps -ef | grep java   查看所有关于java的进程

  7. Classification week6: precision & recall 笔记

    华盛顿大学 machine learning :classification  笔记 第6周 precision & recall 1.accuracy 局限性 我们习惯用 accuracy ...

  8. 【BZOJ1925】[Sdoi2010]地精部落 组合数+DP

    [BZOJ1925][Sdoi2010]地精部落 Description 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为 N 的山脉 H可分 为从 ...

  9. Cocos2d-x Lua Node与Node层级架构

    Cocos2d-x Lua采用层级(树形)结构管理场景.层.精灵.菜单.文本.地图和粒子系统等节点(Node)对象.一个场景包含了多个层,一个层又包含多个精灵.菜单.文本.地图和粒子系统等对象.层级结 ...

  10. JAVA的Hashtable在遍历时的迭代器线程问题

    这篇博客主要讲什么 Hashtable及其内部类的部分源码分析 Hashtable在遍历时的java.util.ConcurrentModificationException异常的来由和解决 单机在内 ...