我正在开发手机应用程序。因此,在发布应用程序后,将为世界各地的所有用户做好准备。我需要用用户的本地时间调整服务器时间。我想也许 Joda(我正在使用的库)能够做到这一点。我的问题是如何将服务器时间更改为用户本地时间。
服务器返回“ 2013-04-17T07:43:45Z ”作为日期/时间。搜索互联网后,我可以成功将其解析为“ 17 Apr 2013, 07:43 AM ”。这是我的方法:
private String formatFanciedDate(String date) {
date = date.substring(0 , date.length()-1); // Removing Z otherwise crash happens
try {
LocalDateTime dt1 = LocalDateTime.parse(date); // Like 2013-03-30T09:04:56.123
return dt1.toString("dd MMM yyyy, HH:mm a");
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
return "";
}
Run Code Online (Sandbox Code Playgroud)
但是,这不是我的当地时间(正确的时间应该是下午 15:00 左右)。我怎样才能把这个时间改成我的当地时间?
我得到:
线程“main” org.joda.time.IllegalFieldValueException 中的异常:无法解析“1444-05-31 10-10”:dayOfMonth 的值 31 必须在 [1,30] 范围内
代码是:
Chronology hijri = IslamicChronology.getInstanceUTC();
DateTimeFormatter formatter = DateTimeFormat.forPattern("yyyy-MM-dd HH-mm")
.withChronology(hijri);
DateTime hijriDt = formatter.parseDateTime("1444-05-31 10-10");
Run Code Online (Sandbox Code Playgroud)
我在某处读到 joda 从 0 而不是 01 开始计算月份。但是,这是用户输入,需要通过格式化程序进行解析。我不能使用 joda 的常规 setter 和 getter 来设置日期。
我收到以下错误:
val formatter = ISODateTimeFormat.dateTimeParser()
scala> val date2 = "Tue Dec 29 11:11:30 IST 2015"
date2: String = Tue Dec 29 11:11:30 IST 2015
scala> formatter.parseDateTime(date2)
java.lang.IllegalArgumentException: Invalid format: "Tue Dec 29 11:11:30 IST 2015" is malformed at "ue Dec 29 11:11:30 IST 2015"
Run Code Online (Sandbox Code Playgroud)
如何解决以下错误??
所以我试图将字符串转换为日期的 iso 格式。这是我要转换的字符串 "2016-07-05 02:14:35.0" 我希望以这种格式使用 iso 8601 "2016-07-05T02:14:35.0"
到目前为止我有这个
DateTimeFormatter format = DateTimeFormat.forPattern("YYYY-MM-DDTHH:mm:sszzz");
new LocalDate();
LocalDate newDate = LocalDate.parse(created,format);
created = newDate.toString();
Run Code Online (Sandbox Code Playgroud)
但它给了我这个例外
ERROR: Illegal pattern component: T; nested exception is java.lang.IllegalArgumentException: Illegal pattern component: T
Run Code Online (Sandbox Code Playgroud)
我跟着例子,我不知道我在这里做错了什么。任何帮助,将不胜感激。
环境:Spark 1.6;斯卡拉
简单的问题,但我没有得到准确的答案。我有一个数据框 DF
id | cr_date
-----------------------
1| 2017-03-17 11:12:00
----------------------
2|2017-03-17 15:10:00
Run Code Online (Sandbox Code Playgroud)
我需要从 cr_date 减去 5 分钟。我试过
val DF2= DF.select ($"cr_Date".cast("timestamp").minusMinutes(5))
// 不工作
有什么建议吗?谢谢
对于startDate和endDate,如何确定以月和日为单位的时间段(剩下的内容):
String pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'";
SimpleDateFormat format = new SimpleDateFormat(pattern);
Date start = format.parse("2016-11-09T02:00:00.000Z");
Date end = format.parse("2017-09-30T09:00:00.000Z");
Run Code Online (Sandbox Code Playgroud)
结果我想要:10个月和22天(结束日期)
我有一个String
类似的日期2017-09-16T05:06:18.157
,我想将其转换为当地时间 (IST)。在印度标准时间,它将在2017-09-16 10:36:18
。
使用 Joda-Time,我尝试将其转换为本地,但我无法做到。
下面是我的代码:
private String getConvertDate(String date_server) {
DateTimeFormatter inputFormatter = DateTimeFormat
.forPattern("yyyy-MM-dd'T'HH:mm:ss.SSS")
.withLocale(Locale.US);
DateTime parsed = inputFormatter.parseDateTime(date_server);
DateTimeFormatter outputFormatter = DateTimeFormat
.forPattern("yyyy-MM-dd HH:mm:ss")
.withLocale(Locale.US)
.withZone(DateTimeZone.getDefault());
return outputFormatter.print(parsed);
}
Run Code Online (Sandbox Code Playgroud) 在我的 Java Spring MVC Web Application
,我正在尝试编写一个程序来保存一些带有时间戳的数据。但是我有一个我必须排除的特定时间段。
例如,我有以下时间戳: Sat Jul 28 17:03:00 IST 2018
这是一个 Java 日期对象。在保存到数据库之前,我必须检查这个时间是否在指定范围内,如果我必须在时间范围结束后获得下一分钟。
但时间范围是以下格式的字符串:
String startTime = "5:03 PM";
String endTime = "5:10 PM";
Run Code Online (Sandbox Code Playgroud)
因此,如果我的 timeStamp 介于这段时间之间,则我的时间戳应更新为Sat Jul 28 17:11:00 IST 2018
.
我现在正在寻找比较两个时间值的方法,因为一个是字符串,另一个是时间戳。
有什么办法可以转换吗String endTime = "5:10 PM"
?到Sat Jul 28 17:11:00 IST 2018
或只是比较的部分时间,计算出分的区别,并添加到时间戳。
我有一个要求,我需要在工作日的上午9点到下午5点之间运行Java程序。时区将始终为UTC。该程序应从上午9点开始,并应在下午5点之前结束。如果无法在下午5点之前完成,则应睡到第二天08:59:59。如果第二天是周末,那么应该从星期一开始。
使用Joda时间的两个日期之间以秒为单位的文章差异?解释了如何获取两个预定义日期之间的秒差,但是我一直想计算下一个工作日上午9点与当前时间之间的差。
我正在考虑通过计算两个日期之间的时间差来使用Thread.sleep()。是否有一个Joda Time API,可以用来计算两个日期之间的时差?
我已经尝试获取当前工作日和第二天上午9点(如果它是工作日),计算这两个纪元之间的差,并将该值用于Thread.sleep,但这有点混乱。
以下是我使用的伪代码
getNextDayEpoch函数包含if / else代码,使用确定日期是工作日/周末java来确定是工作日还是周末
根据是工作日还是周末,我得到相应的纪元值。
currentEpoch = getCurrentEpoch()
nextDayEpoch = getNextDayEpoch()
difference = nextDayEpoch - currentDayEpoch
try {
Thread.sleep(difference);
} catch (InterruptedException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
您能提出更好的建议吗?
我试图获取两个给定日期之间的所有日期,但无法获取。
我试过这样。
val dateformat = new SimpleDateFormat("yyyy-MM-dd")
var start = dateformat.parse("2020-10-01")
var end = dateformat.parse("2020-10-12")
val days = Days.daysBetween(start, end)
val months = Months.monthsBetween(start, end)
Run Code Online (Sandbox Code Playgroud)
但我得到了 daysBetween 未找到?
编辑:我的进口是:
import org.joda.time.DateTime;
import org.joda.time.Days;
import org.joda.time.Months;
Run Code Online (Sandbox Code Playgroud)