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. 用VMware 8安装Ubuntu 12.04具体过程(图解)

    图解演示环境版本号: 本机系统: WIN7 虚拟机:VMware Workstation 8 (英文版) 安装目标:Ubuntu Desktop 12.04 LTS  (请点击这里)先下载好iso镜像 ...

  2. leetcode第一刷_Balanced Binary Tree

    二叉平衡树好火啊.差点儿每一个公司的笔试题里都有它.考了好多次我都不会,挂笔试非常有可能就是由于它.另一个它的同伙叫二叉搜索树,貌似人气比它还要高一些. 二叉平衡树是什么样的树呢.是每一个节点的左右子 ...

  3. 使用pycharm手动搭建python语言django开发环境 - 使用git管理代码(二)

    在pycharm中打开项目,使用File->Version Control->Git.选中git的安装路径并点击确认. 2)在Version Control界面中,配置或新建一个git的主 ...

  4. JSON串常用函数

    1.JSON.parse() parse 用于从一个字符串中解析出json 对象. 例如 var str='{"name":"cpf","age&qu ...

  5. cf #363 d

      time limit per test 2 seconds memory limit per test 256 megabytes input standard input output stan ...

  6. 深入理解yum工作原理

    前言 在前面一篇rpm包制作描述了rpm的打包过程,这篇文章主要讲述yum的工作原理. yum 运行原理 yum的工作需要两部分来合作,一部分是yum服务器,还有就是client的yum工具.下面分别 ...

  7. Cmder 配置使用

    官网下载 配置: 1.把 Cmder 加到环境变量 将Cmder.exe存放的目录添加到系统环境变量path 添加成功后,Win+r 输入cmder,可以正确打开cmder 窗口即可. 2.添加 cm ...

  8. Spring MVC生成PDF文件

    以下示例演示如何使用Spring Web MVC框架生成PDF格式的文件.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: ...

  9. 嵌入式开发之davinci--- 8148/8168/8127 中的alsa音频pcm g711 和aac 音频格式

    (1)alsa pcm (2)g711 (3)aac (4) --------------author:pkf -------------------time:2-4 ---------------- ...

  10. C/C++程序开发中实现信息隐藏的三种类型

    不管是模块化设计,还是面向对象设计.还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏依照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 ...