java 去掉 t_关于Java:在LocalDateTime中不能删除“ T”
這是問題所在:
@GetMapping("/main/search")
public String search (@RequestParam String departure,
@RequestParam String arrival,
@RequestParam String departureTime,
Model model) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
departureTime+=" 00:00:00";
LocalDateTime date = LocalDateTime.parse(departureTime, formatter);
List busflights = busFlightService.search(departure, arrival, date);
格式就像2015-10-23T03:34:40
當(dāng)我嘗試通過這種方式解決問題時(shí):
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.US);
departureTime+=" 00:00:00";
LocalDateTime date = LocalDateTime.parse(departureTime, formatter);
String currentDate = date.format(formatter);
List busflights = busFlightService.search(departure, arrival, currentDate);
我在另一個(gè)地方遇到問題。 Java需要在我的服務(wù)calass中將類型LocalDateTime更改為字符串類型:
public List search(String departure, String arrival, **LocalDateTime** departureTime)*
{
*LocalDateTime departureTimeTho = departureTime.**plusDays(1)**;*
如果我將LocalDateTime更改為String,則不能使用plusDays(1):(((
我也嘗試過這種方式:
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss", Locale.US);
departureTime+="T00:00:00";
LocalDateTime date = LocalDateTime.parse(departureTime, formatter);
格式與字符'T'相同2018-09-13T05:42:28
這種方式對(duì)我也不起作用:
String localTime ="2018-09-13 00:00:00";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss", Locale.ENGLISH);
LocalDateTime date = LocalDateTime.parse(localTime, formatter);
String replace = date.toString().replace("T","");
因?yàn)闊o法將類型更改為字符串
而且由于異常,這種方式無法正常工作:不支持的字段:OffsetSeconds
String localdatetime ="2011-05-01";
localdatetime+="T00:00:00";
DateTimeFormatter date = DateTimeFormatter.ofPattern("yyyy-MM-ddXXX:mm:ss", Locale.US);
LocalDateTime mzt = LocalDateTime.parse(localdatetime);
System.out.println(mzt.format(date));
請(qǐng)幫忙! 我該如何解決這個(gè)問題?
請(qǐng)檢查我的屏幕上有未解決的問題
我的控制器
我的服務(wù)
我的倉庫
我的數(shù)據(jù)采集器格式
我的觀點(diǎn)
我不明白您的確切問題。盡可能傳遞LocalDateTime或其他日期時(shí)間類型而不是字符串。您是正確的,DateTimeFormatter可以在沒有T和LocalDateTime的字符串之間進(jìn)行轉(zhuǎn)換(要解析其中帶有T的字符串,只需使用一個(gè)參數(shù)LocalDateTime.parse并且不使用格式化程序)。
LocalDateTime中沒有T。它的toString方法生成的字符串中包含T,因此您無法避免這種情況。還有你為什么為了向用戶展示LocalDateTime,您當(dāng)然應(yīng)該使用DateTimeFormatter(例如,DateTimeFormatter.ofLocalizedDateTime(FormatSyle.MEDIUM))對(duì)其進(jìn)行格式化。
我需要LocalDateTime使用方法plusDays(1)我無法解析為另一個(gè)DateTime還是可以?
您的問題已經(jīng)顯示了如何解析為LocalDateTime并使用plusDays。很抱歉,我看不到您有任何問題。
可能相關(guān):到ZonedDateTime的字符串正在更改格式
奧萊V.V.抱歉沒有得到它??梢越o我更多信息嗎?
鏈接的問題是有關(guān)要ZonedDateTime以特定方式查看的(以秒和秒為單位)。如果我正確理解了您的問題,那么您正在要求以特定的方式(沒有T)查看LocalDateTime。這樣,我認(rèn)為問題是相似的。如果不是您想要的,請(qǐng)忽略我的評(píng)論。
我之所以投票,是因?yàn)槟坪跞晕磭L試解釋您認(rèn)為T對(duì)您有何危害。如果您能說明這一點(diǎn),那么我相信我們會(huì)更好地了解您的情況,并且我們可以提出一些建議。
偏移量" X"出現(xiàn)在ZonedDateTime中,而不是LocalDatetime中:
我得到異常:不支持的字段:OffsetSeconds
LocalDateTime中沒有T。日期時(shí)間對(duì)象沒有"格式"。
另一方面,根據(jù)ISO 8601標(biāo)準(zhǔn),用于表示日期時(shí)間值的文本,其toString方法始終生成其中帶有T的字符串。您不能更改toString方法或其行為。
避免獲取T的方法是避免直接或間接調(diào)用toString方法。這也意味著:不要打印LocalDateTime對(duì)象,也不要在字符串連接中使用它。
到目前為止提到的事實(shí)對(duì)您發(fā)布的代碼沒有害處,所以我建議您學(xué)習(xí)實(shí)踐它。
編輯:如果我正確地閱讀了從您的評(píng)論鏈接到的前兩個(gè)屏幕截圖,則它們表明您的調(diào)試器顯示了帶有T的LocalDateTime對(duì)象。調(diào)試器也會(huì)調(diào)用LocalDateTime.toString。我無法阻止調(diào)試器執(zhí)行此操作,因此無法顯示T,因此我也不希望您的調(diào)試器也存在。您正在解決錯(cuò)誤的問題。我建議您停止這樣做,并學(xué)會(huì)忍受它。
您應(yīng)該將LocalDateTime作為busFlightService.search的最后一個(gè)參數(shù)傳遞(如果出發(fā)和到達(dá)也是日期和/或時(shí)間,我建議您也為它們使用適當(dāng)?shù)娜掌?時(shí)間類型而不是字符串),這是正確的。這樣您就可以在方法內(nèi)部使用plusDays(以及類似的優(yōu)點(diǎn))。
如果在某個(gè)時(shí)候需要向用戶展示LocalDateTime,則可以正確地認(rèn)為該用戶不想看到T。您可以使用DateTimeFormatter生成任何格式的文本。該類甚至可以本地化生成的文本來表示您的LocalDateTime對(duì)象。
LocalDateTime dt = LocalDateTime.parse("2015-10-23T03:34:40");
DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM)
.withLocale(Locale.forLanguageTag("ru"));
System.out.println(dt.format(formatter));
輸出:
23 окт. 2015 г., 3:34:40
現(xiàn)在沒有T(окт.中的т除外)。在程序內(nèi)部,始終使用LocalDateTime或其他適當(dāng)?shù)娜掌跁r(shí)間類。僅用于演示使用字符串。
這種分離在計(jì)算中得到了廣泛的使用和推薦:一種是模型和業(yè)務(wù)邏輯之間的關(guān)系,另一種是用戶界面和表示之間的關(guān)系。
PS:另外,如果您以2015-10-23(yyyy-MM-dd)之類的字符串形式接收出發(fā)時(shí)間,則無需修改該字符串即可將其轉(zhuǎn)換為LocalDateTime。請(qǐng)改用LocalDate或進(jìn)行如下轉(zhuǎn)換:
String departureTime ="2015-10-23";
LocalDateTime dt = LocalDate.parse(departureTime).atStartOfDay();
公共字符串搜索(@RequestParam字符串離開,@ RequestParam字符串到達(dá)??,@ RequestParam字符串離開時(shí)間,模型模型){LocalDateTime日期= LocalDateTime.parse(departureTime +" T00:00:00"); DateTimeFormatter formatter = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM).withLocale(Locale.forLanguageTag(" ru")));的System.out.println(date.format(格式化)); List busflights = busFlightService.search(出發(fā),到達(dá),日期); `
日期inde buger 2015-10-23T03:34:40
請(qǐng)檢查我的截圖.... plsss
首先[link](picshare.ru/view/9016752)
服務(wù)[鏈接] picshare.ru/view/9016759
存放區(qū)[鏈接] picshare.ru/view/9016761
DATAPICKER FORMAT [鏈接] picshare.ru/view/9016763
我的看法[鏈接] picshare.ru/view/9016765
" date inde buger 2015-10-23T03:34:40"是的,沒有辦法避免這種情況??吹轿业木庉?。由于注釋不允許格式化和縮進(jìn),因此我無法閱讀您注釋中的代碼。
據(jù)我所知,您已經(jīng)以自己的方式解決了問題。
我建議:
當(dāng)您請(qǐng)求"搜索"方法時(shí),可以采用另一個(gè)參數(shù)。另一個(gè)參數(shù)是DateTimeFormatter formatter,因此您可以使用自己的方式:
LocalDateTime departureTimeTho = departureTime.plusDays(1);
String date = departureTimeTho.format(formatter)
在MySql Datebase類型DATETIME中,無法將類型更改為String becase
只需刪除您作為參數(shù)傳遞的T字符。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd**'T'**HH:mm:ss", Locale.US);
要獲得更多幫助,您可以從以下鏈接獲取幫助:https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html
我仍然沒有得到一個(gè)明確的答案,我并沒有理解它;(((
總結(jié)
以上是生活随笔為你收集整理的java 去掉 t_关于Java:在LocalDateTime中不能删除“ T”的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 易德龙是否有氮化镓 公司主要业务是PCB
- 下一篇: java main是标识符吗_main方