把字符串里的数字格式化成标准时间格式
例如: "today is 20080830" 输出 "today is 2008-08-30"
"今天的日期是20080830" 输出 "今天的日期是2008-08-30"
非作业贴,我自学的。我用了 几个类都没有找到匹配的格式。 我才接触到这里,求高手帮忙。
例如: "today is 20080830" 输出 "today is 2008-08-30"
"今天的日期是20080830" 输出 "今天的日期是2008-08-30"
非作业贴,我自学的。我用了 几个类都没有找到匹配的格式。 我才接触到这里,求高手帮忙。
要是你的字符串后面的六个字符永远是表示日期的六个数字,那就更简单了
希望对你有帮助
用日期相关类做???
那就先把拿到的“20080830”转换成日期,然后再用
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
SimpleDateFormat formatter1 = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat formatter2 = new SimpleDateFormat("yyyy-MM-dd");
String datestring = "today is 20080830 \n 今天的日期是20080830";
Matcher m = Pattern.compile("\\d{8}").matcher(datestring);
StringBuffer sb = new StringBuffer();
while (m.find()) {
String s = m.group(0);
try {
Date date = formatter1.parse(s);
s = formatter2.format(date);
} catch (ParseException e1) {}
m.appendReplacement(sb, s);
}
m.appendTail(sb);
System.out.println(sb);
String s="今天的日期是20080830";
//String s="today is 20080830";
s=s.replaceAll("(\\d{4})(\\d{2})(\\d{2})","$1-$2-$3");
System.out.println(s);不过有点粗暴哈, 他会把所有挨在一起的6个数字变成 xxxx-xx-xx 的形式
import java.text.SimpleDateFormat;
import java.util.Date;public class TsetDate { /**
* @param args
*/
public static void main(String[] args) {
String sr = "20080303";
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd");
Date d = new Date();
try {
d = f.parse(sr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(f1.format(d));
}}
* @param args
*/
public static void main(String[] args) {
String sr = "20080303";
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
SimpleDateFormat f1 = new SimpleDateFormat("yyyy-MM-dd");
Date d = new Date();
try {
d = f.parse(sr);
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(f1.format(d));
}}
String s1 = "今天的日期是20080830";
String s2 = "today is 20080830";
String reg = "(.*\\D*)(\\d{4})(\\d{2})(\\d{2})(.*)";
System.out.println(s1.replaceAll(reg, "$1$2-$3-$4$5"));
System.out.println(s2.replaceAll(reg, "$1$2-$3-$4$5"));
}
不知道这个满不满足你“用Date相关类处理”这个要求
这个类可以让你用含有日期的字符串生成一个Date类
不过有一定的限制就是了import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;public class MyDate extends Date{
private static final long serialVersionUID = 1L;
private String[] des;
//构造方法,生成一个Date对象
public MyDate (String arg0) {
des = arg0.split("\\d{8}");
String str = arg0.replaceAll("(.*\\D*)(\\d{8})(.*)", "$2");
SimpleDateFormat df = new SimpleDateFormat("yyyyMMdd");
try {
long to = df.parse(str).getTime();
setTime(to);
} catch (ParseException e) {
e.printStackTrace();
}
}
//通过该方法输出目标字符串
public String getNewOutput() {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String str = df.format(this);
if (des.length > 0) {
str = des[0] + str;
for (int i=1;i<des.length;i++) {
str = str + des[i];
}
}
return str;
}
//试例,正式用这个类的时候,可以删掉这个main方法
public static final void main(String arg[]) {
MyDate date = new MyDate("我的日期是20080909。");
//这个date就是一个实实在在的Date对象,
//任何Date对象的方法都对其适用
System.out.println(date);
System.out.println(date.getNewOutput());
}
}
String sr = "20080303";
SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");