簡體   English   中英

如何在Java中將字符串設置為日期數據類型

[英]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.Datejava.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM