private void showdataTable_btnActionPerformed(java.awt.event.ActionEvent evt) {
try {
DateFormat df = new SimpleDateFormat("YYYY-mm-dd'T'HH:MM:ss'Z'"); //set date format
String set = df.format(dateChoos1.getDate()); //add value to set
BasicDBObject whereQuery = new BasicDBObject();
whereQuery.put("datetimes", set); //where date via set(date)
DBCursor cursor = table.find(whereQuery);
while (cursor.hasNext()) {
DBObject obj = cursor.next();
String ip_address = (String) obj.get("ip_address");
String mac_address = (String) obj.get("mac_address");
Date datetimes = (Date) obj.get("datetimes");
String url = (String) obj.get("url");
model.insertRow(model.getRowCount(), new Object[]{datetimes, ip_address, mac_address, url});
}
} catch (Exception e) {
System.out.println("Something went wrong.");
}
}
您的格式YYYY-mm-dd'T'HH:MM:ss'Z'
不正确。让我们讨论一下这种格式的所有错误。
-
您使用了
Y
而不是y
:符号Y
用于Week year
,而y
用于Year
。检查年份和基于周的年份之间的差异?了解更多信息 -
您已将
mm
用于月份:该月份的正确符号为M
-
您已使用
MM
分钟:分钟的正确符号为m
-
您已将
Z
括在单引号内:符号Z
用于Time zone
,而'Z'
只是一个字符文字。您可能想将+00:00
的时区偏移量格式化为Z
,为此,实际上应该使用X
因此,正确的格式如下:
yyyy-MM-dd'T'HH:mm:ssX
具有建议格式的演示:
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssX", Locale.ENGLISH);
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
System.out.println(sdf.format(date));
}
}
输出:
2021-01-14T08:13:01Z
请注意,java.util
的日期时间API及其格式API、SimpleDateFormat
已过时且为错误产品。建议完全停止使用它们,并切换到现代日期时间API。
- 无论出于何种原因,如果您必须坚持使用Java 6或Java 7,您可以使用ThreeTen Backport将Java.time的大部分功能向后移植到Java 6&7
- 如果您正在为Android项目工作,并且您的Android API级别仍然不符合Java-8,请检查通过desugaring和如何在Android项目中使用ThreeTenABP提供的Java 8+API
使用Date#toInstant
将java.util.Date
对象(传统类型(转换为java.time.Instant
(现代类型(。Instant
表示时间线上的一个瞬时点,对于大多数JSON操作来说应该刚好足够。Instant#toString
返回符合ISO-8601标准的UTC时区偏移的日期-时间字符串。
演示:
import java.time.Instant;
import java.time.OffsetDateTime;
import java.time.ZoneOffset;
import java.time.format.DateTimeFormatter;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime();
Instant instant = date.toInstant();
// Print the value of instant#toString
System.out.println(instant);
OffsetDateTime odt = instant.atOffset(ZoneOffset.UTC);
System.out.println(odt);
// Custom format
DateTimeFormatter dtf = DateTimeFormatter.ofPattern("uuuu-MM-dd'T'HH:mm:ssX", Locale.ENGLISH);
System.out.println(dtf.format(odt));
}
}
输出:
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35Z