1
String string_Date = "2014-06-11"; //my string date 
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd");  
// Date startTimestam = simpleFormat.parse(string_Date); 
Timestamp startTimestam = Timestamp.valueOf(string_Date); 
Calendar cal = Calendar.getInstance(); 
cal.setTime(startTimestam);
cal.set(Calendar.HOUR_OF_DAY, 0); 
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 1);  
starTimeStamp = new Timestamp(cal.getTime().getTime()); 
// will get output date is "2014-06-11 00:00:01"

  • 在这里我不想使用简单的格式将字符串转换为日期或时间戳,
  • 如果上面的代码运行我会得到异常,illegalArgumentException

    时间戳格式必须为 yyyy-mm-dd hh:mm:ss[.fffffffff]**

  • 是否可以使用 out 格式转换字符串日期。
  • 如果可能的话对我很有帮助。

4

1 回答 1

2

由于以下原因,您的问题不是很清楚:

1) 为什么要避免使用 SimpleDateFormat?

2)您想将字符串转换为时间戳还是将日期转换为时间戳?

如果要将字符串转换为时间戳,那么它很简单(不使用 SimpleDateFormat):

String timeValueStr="00:00:01";
String startTimeStr="2014-06-11" + " " + timeValueStr;
Timestamp startTimestamp = Timestamp.valueOf(startTimeStr);

如果要将字符串转换为日期,然后将日期转换为时间戳:

//String to Date conversion
String startTimeStr = "2014-06-11"; 
SimpleDateFormat simpleFormat = new SimpleDateFormat("yyyy-MM-dd"); 
Date d = simpleFormat.parse(startTimeStr);
//Date to Timestamp conversion
Calendar cal = Calendar.getInstance();
cal.setTime(d);
cal.set(Calendar.HOUR_OF_DAY, 0);
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 1);
Timestamp startTimestamp = new Timestamp(cal.getTime().getTime());

当然,如果您必须避免使用 SimpleDateFormat,那么这里是先将 String 转换为 Timestamp 然后再转换为 Date 的代码(不使用 SimpleDateFormat 就无法直接将 String 转换为 Date):

String timeValueStr="00:00:01";
String startTimeStr="2014-06-11" + " " + timeValueStr;
Timestamp startTimestamp = Timestamp.valueOf(startTimeStr);
Date d = new Date(startTimestamp.getTime());
于 2014-07-16T08:28:54.090 回答