如何检查时间 SImpleDateFormat?
How to check time SImpleDateFormat?
我有 2 次 SimpleDateFormat :
- 2020-11-23T21:17:03.039023Z
- 2020-11-23T21:17:03Z
如何查看时间是否使用“yyyy-MM-dd'T'HH:mm:ss.SSS'Z'”或“yyyy-MM-dd'T'HH:mm:ss' Z'" ?
示例:
if ("2020-11-23T21:17:03.039023Z".contentEquals("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")) {
Log.e("TAG", "true");
} else {
Log.e("TAG", "false");
}
您可能需要 String#matches
此处使用适当的正则表达式模式:
String dt = "2020-11-23T21:17:03.039023Z";
String regex = "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}Z";
if (dt.matches(regex)) {
Log.e("TAG", "true");
}
else {
Log.e("TAG", "false");
}
但请注意,以上内容实际上并未对输入进行任何验证,而只是检测一般模式,并与没有 millisecond/microsecond 精度的版本区分开来。
您可以将日期时间字符串解析为 Instant
并检查秒的分数是否大于 0
。
import java.time.DateTimeException;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
// Test
System.out.println(isTagEnabled("2020-11-23T21:17:03.039023Z"));
System.out.println(isTagEnabled("2020-11-23T21:17:03Z"));
}
static boolean isTagEnabled(String strDateTime) {
boolean enbaled = false;
try {
if (Instant.parse(strDateTime).getNano() > 0) {
enbaled = true;
}
} catch (DateTimeException e) {
e.printStackTrace();
}
return enbaled;
}
}
输出:
true
false
基于此,你可以把你的代码写成
if (isTagEnabled("2020-11-23T21:17:03.039023Z")) {
Log.e("TAG", "true");
} else {
Log.e("TAG", "false");
}
请注意 java.util
的日期时间 API 及其格式 API、SimpleDateFormat
已过时且容易出错。我建议你应该完全停止使用它们并切换到 modern date-time API.
在 Trail: Date Time. 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 了解更多关于现代日期时间 API 的信息。
我有 2 次 SimpleDateFormat :
- 2020-11-23T21:17:03.039023Z
- 2020-11-23T21:17:03Z
如何查看时间是否使用“yyyy-MM-dd'T'HH:mm:ss.SSS'Z'”或“yyyy-MM-dd'T'HH:mm:ss' Z'" ?
示例:
if ("2020-11-23T21:17:03.039023Z".contentEquals("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")) {
Log.e("TAG", "true");
} else {
Log.e("TAG", "false");
}
您可能需要 String#matches
此处使用适当的正则表达式模式:
String dt = "2020-11-23T21:17:03.039023Z";
String regex = "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{6}Z";
if (dt.matches(regex)) {
Log.e("TAG", "true");
}
else {
Log.e("TAG", "false");
}
但请注意,以上内容实际上并未对输入进行任何验证,而只是检测一般模式,并与没有 millisecond/microsecond 精度的版本区分开来。
您可以将日期时间字符串解析为 Instant
并检查秒的分数是否大于 0
。
import java.time.DateTimeException;
import java.time.Instant;
public class Main {
public static void main(String[] args) {
// Test
System.out.println(isTagEnabled("2020-11-23T21:17:03.039023Z"));
System.out.println(isTagEnabled("2020-11-23T21:17:03Z"));
}
static boolean isTagEnabled(String strDateTime) {
boolean enbaled = false;
try {
if (Instant.parse(strDateTime).getNano() > 0) {
enbaled = true;
}
} catch (DateTimeException e) {
e.printStackTrace();
}
return enbaled;
}
}
输出:
true
false
基于此,你可以把你的代码写成
if (isTagEnabled("2020-11-23T21:17:03.039023Z")) {
Log.e("TAG", "true");
} else {
Log.e("TAG", "false");
}
请注意 java.util
的日期时间 API 及其格式 API、SimpleDateFormat
已过时且容易出错。我建议你应该完全停止使用它们并切换到 modern date-time API.
在 Trail: Date Time. 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