[英]How to set the string to date dataType in java
我從數據庫獲取日期,該數據庫包含日期和時間戳,在UI中它同時顯示日期和時間戳,但是我只想顯示日期(yyyy-MM-dd)。 我已完成更改,但無法正確設置。
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");
String startDate = dateFormat.format(dataObj.getReportStartDate());
//The above startDate will be of the format : 2012-11-08
我希望將String格式的startDate設置為Date數據類型。
dataIndexObj.setReportStartDate(startDate);
// Here the setReportStartDate is of the type date(), I cannot change its type to string.
我也嘗試了parse(startDate)。它沒有用。 知道怎么做嗎?
您的問題並不十分清楚,因為您已經將數據作為Date
-最初格式化的值。
如果您要從UI以String
返回數據,並且需要進行轉換,則只需使用parse
而不是format
:
DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd", Locale.US);
// TODO: Set the time zone as well...
Date date = dateFormat.parse(text);
也許這就是你的意思:
在數據庫中添加2列。 首先是字符串的類型,另一個是日期。 因此,當您需要字符串類型時,可以調用字符串類型的列
不要混淆java.util.Date
和java.sql.Date
。 第一個名稱不正確,代表日期和時間。 第二個是對某個類的惡意破解,從第一個擴展為子類,並且假裝僅保留日期,而實際上卻保留了設置為00:00:00
UTC的00:00:00
時。 避免這些麻煩且設計不良的舊類。 它們現在已被遺留,由java.time類取代。
LocalDate
LocalDate
類表示沒有日期和時區的僅日期值。
要獲得此類對象,請通過調用添加到舊日期時間類的新方法來轉換java.util.Date
對象。 我們一路需要Instant
。 Instant
類表示UTC時間線上的時刻,分辨率為納秒 。
Instant instant = myUtilDate.toInstant();
也許您的數據庫中有一個java.sql.Timestamp
對象。
Instant instant = myTimestamp.toInstant();
分配時區。 時區至關重要,因為對於任何給定的時刻,日期都會在全球范圍內變化。
ZoneId z = ZoneId.of( "America/Montreal" );
ZonedDateTime zdt = instant.atZone( z );
從中提取LocalDate
對象。
LocalDate ld = zdt.toLocalDate(); // A date-only value, truncating time-of-day and forgetting time zone.
要生成所需格式的字符串,只需調用toString
。 該格式是標准的ISO 8601格式。 解析/生成日期時間值的字符串表示形式時,java.time類默認使用ISO 8601格式。
String output = ld.toString();
走另一個方向。
LocalDate ld = LocalDate.parse( "2012-11-08" );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.