如何从mongodb检索datetiime?通过将数据与jDateChosser Java进行比较 [英] How can I retrieve datetiime from mongodb? By comparing the data with jDateChosser Java
问题描述
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'
不正确.让我们讨论一下这种格式的所有错误.
Your format, YYYY-mm-dd'T'HH:MM:ss'Z'
is not correct. Let's discuss everything which is wrong with this format.
- 您使用的是
Y
而不是y
:符号Y
用于周年
,而y
用于Year
.检查在年份与周基之间的差异?以了解更多信息. - 您已使用
mm
表示月份:该月份的正确符号是M
. - 您已经使用
MM
分钟了:分钟的正确符号是m
. - 您已将
Z
括在单引号内:符号Z
用于时区
,而'Z'
只是字符文字.可能您想将+00:00
的时区偏移量设置为Z
,为此,您实际上应该使用X
.
- You have used
Y
instead ofy
: The symbolY
is used forWeek year
whiley
is used forYear
. Check Difference between year-of-era and week-based-year? to learn more about it. - You have used
mm
for month: The correct symbol for the month isM
. - You have used
MM
for minutes: The correct symbol for the minute ism
. - You have enclosed
Z
within single quotes: The symbol,Z
is used forTime zone
whereas'Z'
is nothing but a character literal. Probably you want to format the timezone offset of+00:00
asZ
and for this, you should in fact useX
.
因此,正确的格式如下:
So, the correct format is as follows:
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 .
Note that the date-time API of java.util
and their formatting API, SimpleDateFormat
are outdated and error-prone. It is recommended to stop using them completely and switch to the modern date-time API.
- 出于任何原因,如果您必须坚持使用Java 6或Java 7,则可以使用 ThreeTen-Backport ,它将大多数 java.time 功能反向移植到Java 6&7.
- 如果您正在为Android项目工作,并且您的Android API级别仍不符合Java-8,请检查如何在Android Project中使用ThreeTenABP .
- For any reason, if you have to stick to Java 6 or Java 7, you can use ThreeTen-Backport which backports most of the java.time functionality to Java 6 & 7.
- If you are working for an Android project and your Android API level is still not compliant with Java-8, check Java 8+ APIs available through desugaring and How to use ThreeTenABP in Android Project.
使用 Date#toInstant
将 java.util.Date
对象(旧类型)转换为 java.time.Instant
(现代类型). Instant
表示时间轴上的瞬时点,对于大多数JSON操作而言应该足够. Instant#toString
返回具有UTC时区偏移量的日期时间字符串,该日期时间字符串符合 ISO-8601标准.
Use Date#toInstant
to convert a java.util.Date
object (the legacy type) to java.time.Instant
(the modern type). Instant
represents an instantaneous point on the time-line and should be just enough for most of your JSON operations. The Instant#toString
returns the date-time string with UTC timezone offset which is compliant with ISO-8601 standards.
演示:
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
这篇关于如何从mongodb检索datetiime?通过将数据与jDateChosser Java进行比较的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!