SimpleDateFormat 类的方法:
public void setLenient(boolean lenient)
Run Code Online (Sandbox Code Playgroud)
指定日期/时间解析是否宽松。通过宽松解析,解析器可以使用试探法来解释与此对象格式不精确匹配的输入。使用严格解析,输入必须与此对象的格式匹配。
或Calendar类的方法:
public void setLenient(boolean lenient)
Run Code Online (Sandbox Code Playgroud)
指定日期/时间解释是否宽松。对于宽松解释,诸如“February 942, 1996”之类的日期将被视为等同于 1996 年 2 月 1 日之后的第 941 天。对于严格(非宽松)解释,此类日期将导致抛出异常。默认是宽松的。
检查格式的一致性或滚动日期。
我想确认MM-DD-YYYY(02-31-2016)的日期是否应该返回无效,因为 2 月的 31 天不是一个真实的日期,所以 04-31-1980 也应该返回无效。
不想使用 Java 8 中的 Joda 时间 API,但是对此的任何建议将不胜感激。
我有一个Activity带有该字段的对象:
@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)
private LocalDateTime start;
Run Code Online (Sandbox Code Playgroud)
我通过发送表单将此对象绑定到控制器方法:
@RequestMapping(value = "update", method = RequestMethod.POST)
public String submitUpdateActivityForm(Activity activity) {
activityRepository.save(activity);
return "successPage;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用 Spring Boot 1.5.1、Spring MVC 4.3.6,并且在我的 Web 应用程序中,我希望从任何时区的客户端接收时间,但LocalDateTime始终保持UTC。但是当 Spring 将对象从表单绑定到控制器中的请求参数时,它完全忽略了 type 属性的输入字符串的时间偏移LocalDateTime。
我认为根据@DateTimeFormat(iso = DateTimeFormat.ISO.DATE_TIME)Spring 的文档会找到字符串中的偏移量并将输入日期时间从给定的时区转换为我的服务器的时区(即 UTC)然后绑定。
例如:我希望将字符串2017-05-31T12:00-03:00转换为LocalDateTime '2017-05-31T15:00'并2017-05-31T12:00Z在不更改的情况下解释为LocalDateTime '2017-05-31T12:00'. 不幸的是,LocalDateTime无论时间偏移如何,我总是得到。
这是正确的行为@DateTimeFormat还是我做错了什么?我应该实现 SpringConverter还是扩展PropertyEditorSupport?
这是处理时间的正确方法吗?我想接受任何类型的日期,但将它们保留在 UTC 中,LocalDateTime因为这样我就可以轻松地将它们发送到客户端,在那里我可以将它们从 UTC 转换为客户端的本地时区并显示。
我正在开发一个我正在使用Java8 Time的应用程序.我正面临一个问题.
假设时间A是08:00,时间B是17:00,所以这两次之间的差异将是9h,在我的情况下是正确的,但如果时间A是18:00而时间B是02:00它应该是8h,但在我的情况下我的程序返回-16.请有人指导我如何解决这个问题.
我的代码:
@Test
public void testTime()
{
DateTimeFormatter format = DateTimeFormatter.ofPattern("HH:mm");
String s = "18:00";
String e = "02:00";
// Parse datetime string to java.time.LocalDateTime instance
LocalTime startTime = LocalTime.parse(s, format);
LocalTime endTime = LocalTime.parse(e, format);
String calculatedTime = ChronoUnit.HOURS.between(startTime, endTime)%24 + ":"
+ ChronoUnit.MINUTES.between(startTime, endTime)%60;
System.out.println(calculatedTime);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试将巴西本地日期转换为 UTC 格式。我已经开发了我的解决方案,但我相信它可以改进。我一直在寻找其他问题,但没有成功。
我的问题是,当我使用以下方法处理Date对象时:
Instant endDateTime = questionDate.toInstant();
Run Code Online (Sandbox Code Playgroud)
我收到一个 UTC 日期,"2017-11-16T00:00:00Z"但这应该是巴西本地日期(不正确,因为它有尾随"Z"),当我尝试转换为 UTC 时,我收到相同的输出。
另一方面,如果我使用ZoneDateTimeclass 并使用LocalDateTimeobject构建日期,我会在输出中丢失秒数:"2017-11-16T02:00Z". 当我使用时会发生这种情况:
LocalTime.of(hour, minutes, seconds);
Run Code Online (Sandbox Code Playgroud)
我搜索LocalTime课堂,我认为这是因为分钟或秒,0但我不确定。
OffsetDateTime类"2017-11-16""2017-11-16T02:00:00Z"private static OffsetDateTime processDate(Date questionDate) {
Instant endDateTime = questionDate.toInstant();
ZoneId zoneId = ZoneId.of(ZONEID);
String [] date = endDateTime.toString().split("T");
LocalDateTime localDateTime = convertLocalTimeToUtc(date);
ZonedDateTime zonedDateTime = …Run Code Online (Sandbox Code Playgroud) 我正在尝试调整 a 的时间java.time.Instant。
我试过这个代码:
Instant validFrom = //from my method parameter
validFrom = validFrom.with(ChronoField.HOUR_OF_DAY, 19).with(ChronoField.MINUTE_OF_DAY, 00)
.with(ChronoField.SECOND_OF_DAY, 00).with(ChronoField.MILLI_OF_DAY, 00);
Run Code Online (Sandbox Code Playgroud)
但我有一个例外:
java.time.temporal.UnsupportedTemporalTypeException: Unsupported field: HourOfDay
at java.time.Instant.with(Instant.java:720)
Run Code Online (Sandbox Code Playgroud)
这是非常值得阅读文档和检查源代码的。我不太清楚为什么我不能这样做。是否有另一种方法可以进行此操作而不会引起许多转换?
我的代码没有显示正确或所需的输出问题.这是我写的代码.
import java.time.LocalDateTime;
public class DriversLicense
{
private String name;
private int id;
private int expYear;
private int expMonth;
private int expDay;
public DriversLicense(String name, int id, int expYear, int expMonth, int expDay)
{
this.name = name;
this.id = id;
this.expYear = expYear;
this.expMonth = expMonth;
this.expDay = expDay;
}
public boolean isExpired()
{
LocalDateTime date = LocalDateTime.now();
boolean tORf = false;
int year = date.getYear();
int month = date.getMonthValue();
int day = date.getDayOfMonth();
if(year > this.expYear && month > …Run Code Online (Sandbox Code Playgroud) 我正在使用 java 8 并且我正在尝试计算两个 OffsetDateTime 对象之间的月数。做这个的最好方式是什么?
当我在我的 android 手机上部署我的 android 应用程序时,我面临 ClassNotFoundException。
我尝试在具有 Android 6.0.1 和 Android 7.1.1 的 Android 手机上
而当我在模拟器(Nexus 5X API 26)上部署相同的应用程序并运行 Android 8.0 时,我没有遇到任何问题。该应用程序加载顺利。
Build.gradle (app) 文件有
android {
compileSdkVersion 28
defaultConfig {
applicationId "de.pfiva.mobile.voiceassistant"
minSdkVersion 23
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
Run Code Online (Sandbox Code Playgroud)
我已经包含了来自本地 Maven 的依赖项。此依赖项基本上具有纯 Java 类 (POJO)。在一些类中有 java.time.LocalDateTime 类型的字段
我该如何解决这个问题。寻找建议。
谢谢。
例外 :
E/AndroidRuntime: FATAL EXCEPTION: main
Process: de.pfiva.mobile.voiceassistant, PID: 25245
java.lang.NoClassDefFoundError: Failed resolution of: …Run Code Online (Sandbox Code Playgroud) java.sql.Date date = java.sql.Date.valueOf("1900-01-01");
org.joda.time.LocalDate localDate = new org.joda.time.LocalDate(date);
Run Code Online (Sandbox Code Playgroud)
基于上面的代码,我做了一些测试如下:
如果我将本地时区更改为UTC+8 Singapore Timezone,将会得到1899-12-31
如果我将本地时区更改为UTC+8 China Timezone,将会得到1900-01-01
如果我将本地时区更改为UTC-8 America/Los_Angeles Timezone,将会得到1900-01-01
如果我将本地时区更改为UTC+8 China Timezone,将会得到1900-01-01
有人可以帮忙澄清一下吗??它有点困惑。