2011-12-28 137 views
4

如何創建不帶時區的java.sql.timestamp(我正在獲取2007-09-23T10:10:10Z ,並假裝爲2007-09-23T10:10:10)。創建不帶時區的時間戳

我嘗試

Timestamp timestamp = Timestamp.valueOf("2010-10-23 12:05:16"); 

,但在調試我看到CDATE是2007-09-23T10:10:10.000+0100,而不是2007-09-23T10:10:10

回答

11

時間戳沒有一個時區。當您將時間戳顯示爲字符串時,它會顯示一個時間並提及時區,否則您無法知道它表示的時間。它選擇使用默認時區(你的),因爲這是你最熟悉的。

說,它是12:00:00並不意味着什麼。說你的時區在12:00:00意味着什麼。但時間戳只包含一個即時的時間。您可以使用DateFormat及時顯示您想要的任何時區。

注意:Timestamp.valueOf("2010-10-23 12:05:16");的意思是「在給定時間在默認時區中創建時間戳」。

+0

這意味着沒有辦法說不需要默認時區(或使用日期相同)?我假裝在「23T10:10:10Z」中忽略Z. – JMarques 2011-12-28 12:07:36

+0

使用DateFormat,將其時區和模式設置爲您需要的時區和模式,解析您的日期/時間String,並使用Date中的毫秒實例化Timestamp。要顯示時間戳,請實例化DateFormat,將其時區和模式設置爲所需的格式,然後格式化時間戳。 – 2011-12-28 12:22:48