请问怎么把"yyyy-MM-dd HH:mm:ss"格式的字符串转换成纯数字的long类型。
ex: String s1 = "2009-12-02 10:17:51";
String s2 = "2009-11-02 22:22:22";s1的时间大于s2的时间,去掉“-”和空格转换成long类型来判断s1>s2。请问有什么好方法实现吗?
(由于小弟这方面的原因,不能用SimpleDateFormat类转换成Date后再判断)
ex: String s1 = "2009-12-02 10:17:51";
String s2 = "2009-11-02 22:22:22";s1的时间大于s2的时间,去掉“-”和空格转换成long类型来判断s1>s2。请问有什么好方法实现吗?
(由于小弟这方面的原因,不能用SimpleDateFormat类转换成Date后再判断)
用string的split方法, 首先用空格, 截成2009-12-02和10:17:51两部门
日期部门用-截成2009, 12, 02三部门, 时间部门用:截成10, 17, 51三部门
剩下的工作就是数学运算嘛
public class Main
{
public static Calendar getCalendar(String now)
{
int year = Integer.parseInt(now.substring(0, 4));
int month = Integer.parseInt(now.substring(5, 7));
int date = Integer.parseInt(now.substring(8, 10));
int hour = Integer.parseInt(now.substring(11, 13));
int minute = Integer.parseInt(now.substring(14, 16));
int second = Integer.parseInt(now.substring(17, 19));
Calendar c1 = Calendar.getInstance();
c1.set(Calendar.YEAR, year);
c1.set(Calendar.MONTH, month);
c1.set(Calendar.DATE, date);
c1.set(Calendar.HOUR, hour);
c1.set(Calendar.MINUTE, minute);
c1.set(Calendar.SECOND, second);
return c1;
}
public static void main(String[] args)
{
String s1 = "2009-12-02 10:17:51";
String s2 = "2009-11-02 22:22:22";
if(getCalendar(s1).before(getCalendar(s2)))
{
System.out.println("s1 before s2");
}
else
{
System.out.println("s1 after s2");
}
}
}
{
public static void main(String[] args){ String s1 = "2009-12-02 10:17:51";
String s2 = "2009-11-02 22:22:22";
Long s1ToLong= new Long(s1.replaceAll("[^\\d]+","")); //将非数字替换成空 Long s2ToLong= new Long(s2.replaceAll("[^\\d]+","")); //将非数字替换成空 System.out.println(s1ToLong+" "+s2ToLong ); System.out.println(s1ToLong>s2ToLong );
}
}
不好意思, 我上面说的这个在java中行不通, 刚问老大, 说java中正则不支持命名组..,
用正则那我就只有这个办法了:Pattern p = Pattern.compile("^(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2})$");
Matcher m1 = p.matcher("2009-11-02 22:22:22");
Matcher m2 = p.matcher("2009-11-02 22:22:22");
int[] time1 = new int[6];
int[] time2 = new int[6];
time1[0] = (int)m.group(1);
time1[1] = (int)m.group(2);
time1[2] = (int)m.group(3);
time1[3] = (int)m.group(4);
time1[4] = (int)m.group(5);
time1[5] = (int)m.group(6);
time2[0] = (int)m.group(1);
time2[1] = (int)m.group(2);
time2[2] = (int)m.group(3);
time2[3] = (int)m.group(4);
time2[4] = (int)m.group(5);
time2[5] = (int)m.group(6);
boolean isEquals = True;
for(int i = 0; i < time1.length && isEquals; i++) {
if(time1[i] != time2[i]) {
System.out.println(time1[i]<time2[i]?"时间1小":"时间2小");
isEquals = !isEquals;
}
}
System.out.println("两个时间相等");