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
while y
是用来Year
. Check 按时代年份和按周年份之间的区别? https://stackoverflow.com/questions/26431882/difference-between-year-of-era-and-week-based-year了解更多信息。
-
您已使用过
mm
月份:月份的正确符号是M
.
-
您已使用过
MM
分钟:分钟的正确符号是m
.
-
您已附上
Z
单引号内:符号,Z
是用来Time zone
然而'Z'
只是一个字符文字。可能您想要格式化时区偏移量+00:00
as 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));
}
}
Output:
2021-01-14T08:13:01Z
请注意,日期时间 APIjava.util
及其格式化 API,SimpleDateFormat
已经过时且容易出错。建议完全停止使用并改用现代日期时间 API https://www.oracle.com/technical-resources/articles/java/jf14-date-time.html.
- 无论出于何种原因,如果您必须坚持使用 Java 6 或 Java 7,您可以使用三十后端口 http://www.threeten.org/threetenbp/其中向后移植了大部分java.timeJava 6 和 7 的功能。
- 如果您正在从事 Android 项目,并且您的 Android API 级别仍然不符合 Java-8,请检查通过脱糖提供 Java 8+ API https://developer.android.com/studio/write/java8-support-table and 如何在Android项目中使用ThreeTenABP https://stackoverflow.com/questions/38922754/how-to-use-threetenabp-in-android-project.
Use Date#toInstant https://docs.oracle.com/javase/8/docs/api/java/util/Date.html#toInstant--转换一个java.util.Date
对象(遗留类型)java.time.Instant
(现代类型)。Instant
代表时间线上的瞬时点,应该足以满足大多数 JSON 操作。这Instant#toString https://docs.oracle.com/javase/8/docs/api/java/time/Instant.html#toString--返回符合 UTC 时区偏移量的日期时间字符串ISO-8601 标准 https://en.wikipedia.org/wiki/ISO_8601.
Demo:
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));
}
}
Output:
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35.659Z
2021-01-14T08:28:35Z
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)