论坛首页 招聘求职论坛

一道java题目

浏览 6853 次
精华帖 (0) :: 良好帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-08-30  
把字符串里的数字格式化成标准时间格式

eg: "today is 20080830" 输出 "today is 2008-08-30"
     "今天的日期是20080830" 输出 "今天的日期是2008-08-30"
     "the project is 7899744" 输出 "the project is 7899744"

   发表时间:2008-09-01  
package com.ghostdom.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
/*
* 格式1 20080111
*/
private static final String DATE_FORMAT_1 = "yyyyMMdd" ;
/*
* 格式2 2008-01-11
*/
private static final String DATE_FORMAT_2 = "yyyy-MM-dd" ;

public String formatDate(String str) {
/*
* 去除字符串所有空格
*/
String str_array[] = str.split("\\s");
String rem_spaces = "";
for (int i = 0; i < str_array.length; i++) {
rem_spaces += str_array[i] ;
}
/*
* 截取非日期部分字符串
*/
String str_array_two[] = rem_spaces.split("\\d");
String non_digital ="" ;
for (int i = 0; i < str_array_two.length; i++) {
non_digital += str_array_two[i];
}

// 获得日期字符串
String str_date = rem_spaces.replaceAll(non_digital, "");
//
if(str_date==null || str_date.equals("")||str_date.length() < 7){
return str ;
}

SimpleDateFormat  format = new SimpleDateFormat(DATE_FORMAT_1);
SimpleDateFormat  dateFormat = new SimpleDateFormat(DATE_FORMAT_2);
try {
Date date = format.parse(str_date);
return str.replaceAll(str_date, dateFormat.format(date));
} catch (ParseException e) {
return str;
}
}
}
0 请登录后投票
   发表时间:2008-09-01  
Tceisk9584 写道
package com.ghostdom.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
/*
* 格式1 20080111
*/
private static final String DATE_FORMAT_1 = "yyyyMMdd" ;
/*
* 格式2 2008-01-11
*/
private static final String DATE_FORMAT_2 = "yyyy-MM-dd" ;

public String formatDate(String str) {
/*
* 去除字符串所有空格
*/
String str_array[] = str.split("\\s");
String rem_spaces = "";
for (int i = 0; i < str_array.length; i++) {
rem_spaces += str_array[i] ;
}
/*
* 截取非日期部分字符串
*/
String str_array_two[] = rem_spaces.split("\\d");
String non_digital ="" ;
for (int i = 0; i < str_array_two.length; i++) {
non_digital += str_array_two[i];
}

// 获得日期字符串
String str_date = rem_spaces.replaceAll(non_digital, "");
//
if(str_date==null || str_date.equals("")||str_date.length() < 7){
return str ;
}

SimpleDateFormat  format = new SimpleDateFormat(DATE_FORMAT_1);
SimpleDateFormat  dateFormat = new SimpleDateFormat(DATE_FORMAT_2);
try {
Date date = format.parse(str_date);
return str.replaceAll(str_date, dateFormat.format(date));
} catch (ParseException e) {
return str;
}
}
}


"the project is 7899744" 输出 "the project is 7899744"

对于不是日期的数字是不用转换的。
0 请登录后投票
   发表时间:2008-09-01  
又个东西叫正则……
0 请登录后投票
   发表时间:2008-09-01  
jiyanliang 写道
Tceisk9584 写道
package com.ghostdom.util;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateUtil {
/*
* 格式1 20080111
*/
private static final String DATE_FORMAT_1 = "yyyyMMdd" ;
/*
* 格式2 2008-01-11
*/
private static final String DATE_FORMAT_2 = "yyyy-MM-dd" ;

public String formatDate(String str) {
/*
* 去除字符串所有空格
*/
String str_array[] = str.split("\\s");
String rem_spaces = "";
for (int i = 0; i < str_array.length; i++) {
rem_spaces += str_array[i] ;
}
/*
* 截取非日期部分字符串
*/
String str_array_two[] = rem_spaces.split("\\d");
String non_digital ="" ;
for (int i = 0; i < str_array_two.length; i++) {
non_digital += str_array_two[i];
}

// 获得日期字符串
String str_date = rem_spaces.replaceAll(non_digital, "");
//
if(str_date==null || str_date.equals("")||str_date.length() < 7){
return str ;
}

SimpleDateFormat  format = new SimpleDateFormat(DATE_FORMAT_1);
SimpleDateFormat  dateFormat = new SimpleDateFormat(DATE_FORMAT_2);
try {
Date date = format.parse(str_date);
return str.replaceAll(str_date, dateFormat.format(date));
} catch (ParseException e) {
return str;
}
}
}


"the project is 7899744" 输出 "the project is 7899744"

对于不是日期的数字是不用转换的。


这样应该就可以了
Date date;
SimpleDateFormat a=new SimpleDateFormat("yyyy-MM-dd");
try {
date=a.parse("99000");
System.out.println(date.toLocaleString());
} catch (ParseException e) {
// TODO Auto-generated catch block
System.out.println("88000");
}

虽然出来的localeString 是带分秒的 你可以截取一下就搞定了 - - 也不知道 toLocaleString这个过时的方法你们让不让用
0 请登录后投票
   发表时间:2008-09-01  
# original_string = "today is 20080830"
def format_date(original_string)
  numbers_pattern = /(\d+)/
  date_str = numbers_pattern.match(original_string)[0]
  original_string.sub(numbers_pattern, Date.parse(date_str).to_s(:db))
rescue
  original_string
end
0 请登录后投票
   发表时间:2008-09-01  
受教了~~~ 谢谢
0 请登录后投票
   发表时间:2008-09-01  
var str = "today is 20080830" ;
			var myReg = /(\d{4})(\d{2})(\d{2})/;
			var newstr = str.replace(myReg, "$1-$2-$3"); 
			alert(newstr); 
0 请登录后投票
   发表时间:2008-11-24  
可用正则表达式
0 请登录后投票
   发表时间:2008-11-24  
可用正则表达式
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics