Java Date Dateformat 正则表达式 simpledateformat patter matcher

原创 2018年04月17日 08:42:50
package javanate20180416;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Note {
public static void main(String[] args) {
// TODO 自动生成的方法存根
//使用Date类直接创建日期对象
//无参构造:使用当前时间构造日期对象
Date a=new Date();
System.out.println(a);//得到当前时间日期对象
System.out.println(a.getTime());//得到当前时间毫秒数(自1970年1月1日00:00:00格林威治(GMT)时间以来)
//有参构造:使用指定时间毫秒数构造日期对象
Date b=new Date(1523874203948l);
System.out.println(b);
System.out.println("***************************************");
System.out.println("***************************************");
Date date=new Date();
System.out.println(date.getTime());
System.out.println(date.getDate());//已过时
System.out.println("***************************************");
System.out.println("***************************************");
/*Calendar类
Java提供Calendar类能更好的处理日期,Calendar类也在java.util包中
Calendar是抽象类,不能通过new来创建对象,可以通过getInstance方 法创建对象
在创建对象时,我们默认使用无参getInstance方法
Calendar cal = Calendar.getInstance();*/
//Calendar类中提供了大量的静态常量值,可以方便的获取各种时间数据
// 例如:年、月、日、时、分、秒、星期几等
Calendar cal = Calendar.getInstance(); 
System.out.println(" 年 :" + cal.get(Calendar.YEAR)); 
// 起始月份是0 
System.out.println(" 月 :" + cal.get(Calendar.MONTH)); 
System.out.println(" 日 :" + cal.get(Calendar.DAY_OF_MONTH)); 
System.out.println(" 时 :" + cal.get(Calendar.HOUR));
System.out.println(" 分 :" + cal.get(Calendar.MINUTE)); 
System.out.println(" 秒 :" + cal.get(Calendar.SECOND)); 
// 周日默认为一周的第一天 
System.out.println(" 星 期 :" + cal.get(Calendar.DAY_OF_WEEK));
System.out.println("***************************************");
System.out.println("***************************************");
//Calendar类有多种设置时间的方式
 //通过单个静态常量设置
Calendar cal1 = Calendar.getInstance();
cal1.set(Calendar.YEAR, 2017); 
cal1.set(Calendar.MONTH, 2); 
cal1.set(Calendar.DAY_OF_MONTH, 14);
System.out.println(cal1.getTime());
//通过add方法和各种静态常量,可以方便的计算时间
cal1.add(Calendar.YEAR, 1);
System.out.println(" 年 :" + cal1.get(Calendar.YEAR));
System.out.println(" 月 :" + cal1.get(Calendar.MONTH)); 
System.out.println(" 日 :" + cal1.get(Calendar.DAY_OF_MONTH));
//通过多个参数直接设置时间
Calendar cal2 = Calendar.getInstance(); // 设置年月日
cal2.set(2017, 2, 14);
System.out.println(cal2.getTime());
   System.out.println("***************************************");
System.out.println("***************************************");
   /*为了更简单明了的显示时间,Java提供了日期格式类DateFormat类
 DateFormat类位于java.text包  
 DateFormat是为抽象类,有多种方法创建对象  
    使用format()方法格式化时间*/
Date date1 = new Date(); 
DateFormat df = DateFormat.getDateInstance(); //日
DateFormat df1 = DateFormat.getTimeInstance();//期
DateFormat df2 = DateFormat.getDateTimeInstance();//日期
System.out.println(df.format(date1)); 
System.out.println(df1.format(date1)); 
System.out.println(df2.format(date1));
/*SimpleDateFormat是DateFormat的子类 
       可通过字符串格式参数创建SimpleDateFormat对象
 可以选择任何用户定义的日期时间格式的模式 
       格式参数要采用指定模式字母来表示*/
//通过字符串格式参数创建SimpleDateFormat对象
Date date3 = new Date(); 
SimpleDateFormat sdf1 = new SimpleDateFormat("yyyy-MM-dd"); 
SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm:ss");
SimpleDateFormat sdf3 = new SimpleDateFormat("yyyy年MM月dd日HH时mm分ss秒SSS毫秒"); 
String str1 = sdf1.format(date3); 
String str2 = sdf2.format(date3); 
String str3 = sdf3.format(date3); 
System.out.println(str1);
System.out.println(str2); 
System.out.println(str3); 
System.out.println("***************************************");
System.out.println("***************************************");
//正则表达式:普通字符,元字符
/*什么是正则表达式?
 简单来讲,正则表达式就是“符合一定规则的字符串”
 正则表达式由普通字符和元字符组成,其中元字符的使用是正则表达式的核心
 正则表达式常用来检索,替换符合某个模式的文本 */
/*正则表达式是一种非常强大的工具,例如:
 可以使用正则表达式写网页爬虫,抓取互联网上的数据
 可以使用正则表达式写HTML和js的解析器,实现简单的浏览器功能  作为程序员,在日常工作中也经常会用到正则表达式:
 在程序中校验密码、邮箱、手机号等字符串是否符合规则
 在项目或日志文件中搜索和提取你需要的信息
 Linux命令中大量使用正则表达式对命令结果做筛选和匹配*/
//元字符就是正则表达式中具有特殊含义的专用字符 
//        用于匹配特定字符的元字符
//  用于限定字符数量的元字符
//  用于约束字符边界的元字符
/*用于匹配特定字符的元字符: 最常见的是方括号 [ ],例如:*/
String a1="[abc]";// [abc] 匹配a, b, c中的任意一个;
String a2="b";//[^abc] 匹配任意一个非a, b, c的字符[a-zA-Z] 匹配a到z,
System.out.println(a2.matches(a1));//或A到Z的任意一个字符
String b1=".";//句号匹配任意字符
String b2="3";
System.out.println(b2.matches(b1));
String c1="\\d";//\d 匹配数字,相当于[0-9];
String c2="e";//\D 匹配非数字,相当于[^0-9]
System.out.println(c2.matches(c1));
String d1="\\W";// \w 匹配单词字符,相当于[a-zA-Z_0-9];
String d2="3";//\W 匹配非单词字符,相当于[^\w]
System.out.println(d2.matches(d1));
System.out.println("*******************************************");
System.out.println("*******************************************");
/*用于限定字符数量的元字符:
 最常用的是使用大括号 {},如下:
 {n} 恰好出现n次
 {n, m} 至少n次,至多m次; {n, } 至少n次,无上限*/
String e1=".{5}";
String e2="3ddsa";
System.out.println(e2.matches(e1));
//对于常用的数量限定,有简单的表示方式:
String f1="wqej?";//问号 ? 表示0次或1次
String f2="wqej";
System.out.println(f2.matches(f1));
String g1="d*";//星号 * 表示0次或多次
String g2="ddddd";
System.out.println(g2.matches(g1));
String h1="a+";// 加号 + 表示一次或多次
String h2="aaaaa";
System.out.println(h2.matches(h1));
System.out.println("*******************************************");
System.out.println("*******************************************");
String l1="^idff";//^ 表示行的开头
String l2="dhadsa$";//$ 表示行的结尾
String l3="\\ddhadsa\\d";//$ 表示行的结尾
String l4="dha|dsa";//A|B 匹配A或者B
String l5="(df){2}";// (ab){2} 匹配abab
String l55="dfdf";
System.out.println(l55.matches(l5));
System.out.println("*******************************************");
System.out.println("*******************************************");
//String类中的正则方法
//String类有三种方法支持正则表达式:
//字符串的匹配:public boolean matches(String regex)
//字符串的分割:public String[] split(String regex)
String m="dh au di hai d";
String []arr=m.split(" ");
for (String m1 : arr) {
System.out.println(m1);
}
System.out.println("*******************************************");
//字符串的替换:public String replaceAll(String regex, String replacement)
System.out.println(m.replaceAll(" ", "22"));
System.out.println("*******************************************");
System.out.println("*******************************************");
/*Java正则表达式的核心API在java.util.regex包中,有两个关键类:
 Pattern用来编译一个正则表达式
 Matcher用来执行正则表达式的匹配操作  
String类提供的正则相关方法,内部都是使用Pattern和Matcher实现的:
public final class String ... {
... 
public boolean matches(String regex) {
return Pattern.matches(regex, this); 

}*/
//Pattern和Matcher的标准用法有三步: 
// 使用Pattern来编译正则表达式:
Pattern pattern = Pattern.compile("[a-zA-Z]+");
//针对目标文本创建一个Matcher:
Matcher matcher = pattern.matcher("abc23we99nbkd3");
//执行想做的字符串操作,例如替换:
String result = matcher.replaceAll("3412"); 
System.out.println(result);
System.out.println("*******************************************");
System.out.println("*******************************************");
/*Matcher包含的方法很多,常用的有:
 Matcher.matches()可以用来匹配整个字符串,
         此时作用和String.matches()相同*/
Pattern n=Pattern.compile("dsa");
Matcher n1=n.matcher("dsa");
System.out.println(n1.matches());
System.out.println("*********************************************");
System.out.println("*********************************************");
// lookingAt()方法从头开始检测字符串中是否有匹配的子串,找到返回true
//  find()方法搜索下一个匹配的子串,找到返回true
//使用find()匹配成功后,可以用start()和end()拿到子串的位置:
Pattern q = Pattern.compile("[a-z]+"); 
String text = "The game is over."; 
Matcher w = pattern.matcher(text); 
while(w.find()) { 
// 等价于 String str = m.group(); 
String str = text.substring(w.start(),w.end()); 
System.out.print(str + "-"); 

}
}



利用DateFormat、Date、Calendar等类 对含有时间的字符串进行提取和计算

在时间提取方面我用了三种方法,最开始使用的是正则表达式,很简洁, 之后使用的是Date类中的方法,但这种方法都已过时, 最后使用的是Calendar类的方法。、 我推荐使用正则表达式,简...
  • qq_33609401
  • qq_33609401
  • 2017-05-16 12:02:10
  • 345

格式化输出 simpleDateFormat 、正则表达式 pattern 和异常

目录格式化输出simpleDateFormat 正则表达式pattern 异常格式化输出simpleDateFormatSimpleDateFormat 是一个以与语言环境有关的方式来格式化和解析...
  • danfengw
  • danfengw
  • 2015-08-03 22:46:00
  • 546

日期操作类(DateFormat与SimpleDateFormat)的区别和使用详解

日期操作类(DateFormat与SimpleDateFormat)的区别和实例SimpleDateFormat使用详解一、DateFormat类此类是一个日期的格式化类,用来格式化日期。具体日期可以...
  • xx326664162
  • xx326664162
  • 2016-08-15 10:33:04
  • 5350

java 日期相关Date、SimpleDateFormat、Calendar区分和使用

一、Date类 类 Date 表示特定的瞬间,精确到毫秒。用距离1970年1月1日00:00:00的毫秒数(long)类型来表示一个特定的时间点,该值可正可负。 Date类中很多方法已经过时,...
  • kaishizhangcheng
  • kaishizhangcheng
  • 2016-09-02 18:54:28
  • 4534

java 日期格式化SimpleDateFormat Local西班牙等国家的日期格式化

java.text.SimpleDateFormat.SimpleDateFormat(String pattern, Locale locale) 中的Locale只给我们提供了部分国家作为常量来供...
  • Damein_
  • Damein_
  • 2016-11-11 10:33:49
  • 2249

Java常用类库之时间操作类——Date、Calendar、DateFormat、SimpleDateFormat及实例操作

学习目标  掌握Date类的使用 可以使用Calendar类取得一个完整的日期 掌握日期格式化的操作 可以使用SimpleDateFormat进行日期的格式化转换操作 编写取得日期的操作类 进一步掌握...
  • u013087513
  • u013087513
  • 2016-07-05 11:32:35
  • 2380

Java中SimpleDateFormat,String.format的用法

SimpleDateFormat  public class SimpleDateFormat extends DateFormat SimpleDateFormat 是一个以...
  • xzhjsj2012
  • xzhjsj2012
  • 2014-05-03 10:13:49
  • 1151

日期操作类(DateFormat、SimpleDateFormat)

1.DateFormat类 此类是一个日期的格式化类,专门格式化日期的操作,因为java.util.Date类本身就已经包含了完整的日期,所以只需要将些日期按照一些好的格式格式化一下显示就好了. ...
  • hanshileiai
  • hanshileiai
  • 2011-08-21 10:39:03
  • 9944

Java中格式化日期时间的类:SimpleDateFormat 用法详解

Java中格式化日期时间的类:SimpleDateFormat 用法详解2009-07-13 00:09在 Java 应用中,格式化日期时间通常会用到 SimpleDateFormat 类public...
  • dy_Smile
  • dy_Smile
  • 2010-10-12 15:12:00
  • 5282

ThreadLocal解决SimpleDateFormat问题

大致意思:Tim Cull碰到一个SimpleDateFormat带来的严重的性能问题,该问题主要有SimpleDateFormat引发,创建一个 SimpleDateFormat实例的开销比较昂贵,...
  • luotuomianyang
  • luotuomianyang
  • 2016-08-25 14:53:55
  • 720
收藏助手
不良信息举报
您举报文章:Java Date Dateformat 正则表达式 simpledateformat patter matcher
举报原因:
原因补充:

(最多只允许输入30个字)