91

String を TimeStamp に変換しようとしているときに問題が発生しました。の形式の日付を持つ配列があり、の形式でyyyy-MM-dd変更したいyyyy-MM-dd HH:mm:ss.SSS。だから、私はこのコードを使用します:

final String OLD_FORMAT = "yyyy-MM-dd";
final String NEW_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
String oldDateString = createdArray[k];
String newDateString;

DateFormat formatter = new SimpleDateFormat(OLD_FORMAT);
Date d = formatter.parse(oldDateString);
((SimpleDateFormat) formatter).applyPattern(NEW_FORMAT);
newDateString = formatter.format(d);
System.out.println(newDateString);

Timestamp ts = Timestamp.valueOf(newDateString);
System.out.println(ts);

次の結果が得られます。

2009-10-20 00:00:00.000

2009-10-20 00:00:00.0

しかし、私が単純にやろうとすると

String text = "2011-10-02 18:48:05.123";
ts = Timestamp.valueOf(text);
System.out.println(ts);

私は正しい結果を得る:

2011-10-02 18:48:05.123

私が間違っているかもしれないことを知っていますか?助けてくれてありがとう。

4

11 に答える 11

128

正しい結果を得るには、次の手順に従います。

try {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS");
    Date parsedDate = dateFormat.parse(yourString);
    Timestamp timestamp = new java.sql.Timestamp(parsedDate.getTime());
} catch(Exception e) { //this generic but you can control another types of exception
    // look the origin of excption 
}

.parse(String)をスローする場合がありますのでご注意くださいParseException

于 2013-09-20T11:07:20.543 に答える
2
DateFormat formatter;
formatter = new SimpleDateFormat("dd/MM/yyyy");
Date date = (Date) formatter.parse(str_date);
java.sql.Timestamp timeStampDate = new Timestamp(date.getTime());
于 2016-03-03T12:57:11.107 に答える
0

解決策は、oldDateString が「2009-10-20」のようなものであると確信しています。明らかに、これには日よりも低い時間データは含まれていません。この文字列を新しいフォーマッタでフォーマットする場合、分、秒、ミリ秒はどこから取得する必要がありますか?

したがって、結果は完全に正しいです: 2009-10-20 00:00:00.000

これを解決するために必要なのは、最初のフォーマット前の元のタイムスタンプ (時間データを含む) です。

于 2014-06-26T08:16:06.163 に答える
0

最初に日付文字列をdate変換してからtimestamp、次の行のセットを使用して変換します

Date date=new Date();
Timestamp timestamp = new Timestamp(date.getTime());//instead of date put your converted date
Timestamp myTimeStamp= timestamp;
于 2013-09-20T11:01:46.890 に答える
0

一度試してみませんか...

String dob="your date String";
String dobis=null;
final DateFormat df = new SimpleDateFormat("yyyy-MMM-dd");
final Calendar c = Calendar.getInstance();
try {
    if(dob!=null && !dob.isEmpty() && dob != "")
    {
    c.setTime(df.parse(dob));
    int month=c.get(Calendar.MONTH);
    month=month+1;
    dobis=c.get(Calendar.YEAR)+"-"+month+"-"+c.get(Calendar.DAY_OF_MONTH);
    }

}
于 2013-09-20T11:09:37.970 に答える