java中如何将字符串格式转换为日期。
前提是:我不知道字符串是什么样子的,也就是说不是固定的日期格式。
(可能是'2009-9-9' 也可能是'2009-8-8 2:20:20'等)在这种情况下我如何才能把字符串准确的转换为日期格式。
用SimpleDateFormat我必须提前知道字符串是什么样式的才行。
请问我不知道的情况下应该如何做呢
前提是:我不知道字符串是什么样子的,也就是说不是固定的日期格式。
(可能是'2009-9-9' 也可能是'2009-8-8 2:20:20'等)在这种情况下我如何才能把字符串准确的转换为日期格式。
用SimpleDateFormat我必须提前知道字符串是什么样式的才行。
请问我不知道的情况下应该如何做呢
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
public class TestDateFormat { public static void main(String[] args) {
DateFormat df = DateFormat.getDateInstance();
try {
Date dd = df.parse("2009-9-9");
long t = dd.getTime();
java.sql.Date d = new java.sql.Date(t);
System.out.println(d);
} catch (ParseException e) {
e.printStackTrace();
}
}}
/// <summary>
/// 将字符串转换成日期对象
/// </summary>
/// <param name="dateAndtime">日期字符串2009-12-12 12:12:12</param>
/// <returns></returns>
public static DateTime GetDateTime(string dateAndtime)
{
DateTime dt = DateTime.Now;
try
{
int month1 = dateAndtime.LastIndexOf("-") - dateAndtime.IndexOf("-") - 1;
int day1 = dateAndtime.IndexOf(" ") - dateAndtime.LastIndexOf("-") - 1;
int year = Int32.Parse(dateAndtime.Substring(0, 4));
int month = Int32.Parse(dateAndtime.Substring(5, month1));
int day = Int32.Parse(dateAndtime.Substring(month1 + 6, day1));
string temp = dateAndtime.Substring(dateAndtime.IndexOf(" ") + 1, dateAndtime.Length - dateAndtime.IndexOf(" ") - 1);
int hour = Int16.Parse(temp.Substring(0, temp.IndexOf(":")));
int minute = Int16.Parse(temp.Substring(temp.IndexOf(":") + 1, temp.LastIndexOf(":") - temp.IndexOf(":") - 1));
int second = Int16.Parse(temp.Substring(temp.LastIndexOf(":") + 1, temp.Length - temp.LastIndexOf(":") - 1));
dt = new DateTime(year, month, day, hour, minute, second);
}
catch (Exception ex)
{
MessageBox.Show("日期格式有错误,请确认。");
}
return dt;
}
比如是 2009-10-30 和 2009-10-30 10:10:45
可以将2009-10-30 变成 2009-10-30 00:00:00然后统一成 yyyy-MM-dd HH:mm:ss