如何解决以正确的格式显示localDateTime的最佳方法是什么?
我一直在构建一个小型银行应用程序,遇到了一个问题,即交易的localDateTime显示为完整格式“ 2020-10-06T11:54:00.517734”。
这显然不是一件好事,所以我尝试了几种不同的格式化方法,但是大多数方法都以空指针异常结束。
for (Transaction transaction : allTransactions) {
TransactionInfo transactionInfo = new TransactionInfo();
BankAccount bankAccount;
if (transaction.getDebitaccount() == selectedBankAccount) {
bankAccount = transaction.getCreditaccount();
transactionInfo.setAmount(transaction.getAmount().negate());
} else {
bankAccount = transaction.getDebitaccount();
transactionInfo.setAmount(transaction.getAmount());
}
transactionInfo.setDateTime(transaction.getDateTime());
transactionInfo.setName(bankAccount.getAccountName());
transactionInfo.setIban(bankAccount.getIban());
transactionInfo.setDescription(transaction.getDescription());
transactionInfo.setTransactionId(transaction.getId());
transactions.add(transactionInfo);
}
modelAndView.addobject("transactions",transactions);
...
所以我尝试在.format( DateTimeFormatter.ofPattern( "HH:mm:ss" ) )
使用transactionInfo.setDateTime(transaction.getDateTime())
。
但是,这需要localDateTime数据类型。当我尝试在对象类中更改此设置时,我不断收到空指针异常,而且我不喜欢将dateTime表示为String的想法。
这是HMTL页面:
<table class="transaction-table">
<tr>
<th>Afzender</th>
<th>Tegenrekening</th>
<th>bedrag</th>
<th>Datum</th>
<th>Beschrijving</th>
</tr>
<tr th:each="transaction : ${transactions}">
<td th:text="${transaction.name}"></td>
<td th:text="${transaction.iban}"></td>
<td>€<span th:text="${transaction.amount}"></span></td>
<td th:text="${transaction.dateTime}"></td>
<td th:text="${transaction.description}"></td>
</tr>
</table>
我应该改为在HTML文件中制作这些格式吗?还是有更好的方法在Java中实现?
解决方法
应该可以。如果您正在获取NPE,则可能在引用上调用了某个方法,而该引用后面没有任何实际对象(例如,某些getSomething()
返回null
,并且您尝试在该方法上执行某项操作)。
以下是一些示例:
LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_DATE); // 2020-10-06
LocalDateTime.now().format(DateTimeFormatter.ISO_LOCAL_TIME);
LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss")); // 2020/10/06 15:20:03
还有一些其他有用的方法,您可以考虑:
LocalDateTime.now().toLocalDate(); // get date only
LocalDateTime.now().toLocalTime(); // get time only
LocalDateTime.now().withNano(0); // prints something like 2020-10-06T15:26:58 (no nanos which usually we don't need :) )
,
尝试一下:
SimpleDateFormat format = new SimpleDateFormat( "yyyy-MM-dd'T'HH:mm:ss.SSS",Locale.US);
format.setTimeZone(TimeZone.getTimeZone("UTC"));
try{
Date date = format.parse("2020-10-06T11:54:00.517734");
System.out.println(date);
}catch(Exception ex){
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。