如何在Scala中更改日期中的小时数
我想知道如何改变约会的时间 例如,如果日期是一个格式为“2015-06-06 00:00:00”的字符串,我想更改小时显示,使其成为“2015-06-06 07:00:00”如何在Scala中更改日期中的小时数,scala,Scala,我想知道如何改变约会的时间 例如,如果日期是一个格式为“2015-06-06 00:00:00”的字符串,我想更改小时显示,使其成为“2015-06-06 07:00:00” 简单地说,我想将Scala解析为一个日期字符串,然后更改它的时间 您可以使用java中的SimpleDataFormat类。谷歌会帮你的。 注意:您还可以导入joda time java jar,它的功能非常丰富。Samuel 试着增加这样的时间 DateTime dt = new DateTime(); DateTi
简单地说,我想将Scala解析为一个日期字符串,然后更改它的时间 您可以使用java中的SimpleDataFormat类。谷歌会帮你的。 注意:您还可以导入joda time java jar,它的功能非常丰富。Samuel 试着增加这样的时间
DateTime dt = new DateTime();
DateTime year2000 = dt.withYear(2000);
DateTime twoHoursLater = dt.plusHours(2);
这个链接有很好的描述
给定一个日期字符串模式“2015-06-06 00:00:00”,您想更改它的时间 您必须做两件事:将字符串解析为日期,这涉及到SimpleDataFormat;然后修改它的时间,日历获得了许多修改年、月……的方法,因此您可以尝试一下 下面是我如何完成的
import java.text.{ SimpleDateFormat, ParseException }
import java.util.{ Calendar, Date }
object ChangeHourOfDate extends App {
// for formating date as the form you want
val datePattern = "yyyy-MM-dd HH:mm:ss"
def format(when: Date, pattern: String) =
new SimpleDateFormat(pattern).format(when)
implicit class StringToDateOpt(str: String) {
def parse(str: String, pattern: String) = {
val format = new SimpleDateFormat(pattern)
format.setLenient(false)
try
Some(format.parse(str))
catch {
case e: ParseException => None
}
}
def hourChangedOpt(hourToSet: Int) = {
parse(str, datePattern).map { original =>
val calendar = Calendar.getInstance
calendar.setTimeInMillis(original.getTime)
calendar.set(Calendar.HOUR_OF_DAY, hourToSet)
calendar.getTime
}
}
}
// trigger the implicit, create an instance of StringToDateOpt, so you can invoke hourChangedOpt
val result = "2015-06-06 10:00:00".hourChangedOpt(7)
.map(format(_, datePattern)).getOrElse("")
// 2015-06-06 07:00:00
println(result)
}
我们可以通过以下方法使其变得非常简单: SCALA代码
import com.github.nscala_time.time.Imports._
val input_timestamp = "2019-08-05T12:50:21.884+02:00"
val updated_time=input_timestamp.toDateTime + 2.hours + 45.minutes
println(updated_time)
输出:2019-08-05T15:35:21.884+02:00如果要调整小时(加或减),则需要将
字符串
转换为日期时间
格式,以获得正确的新日期和时间
如果您只想操作一个字符串
,那么patch()
就可以了
"2015-06-06 00:00:00".patch(11,"07",2) //res0: String = 2015-06-06 07:00:00
我见过PPE使用这个joda东西,但是当我尝试导入它时,它会给出一个错误。我需要下载任何东西才能在scala上使用jodatime吗?嗯,我试过这个代码。我没有全部抄袭,只是最重要的部分。它适用于上面的字符串,但当我将“2015-06-06 00:00:00”更改为“2015-06-06 10:00:00”时,小时没有变为17,但仍然是7。将“2015-06-06 00:00:00”更改为“2015-06-06 10:00:00”似乎比原始日期多了10个小时,你所说的“小时没有变为17,但仍然是7”是什么意思。哦,我明白了。那一定很混乱。我真正的意思是,当我在“2015-06-06 10:00:00”(我将7解析为整数)上调用HourChange时间时,如果你真正想要的是“2015-06-06 10:00:00”,它会返回为“2015-06-06 07:00:00”。HourChange(7)产生“2015-06-06 07:00:00”,然后我编辑的答案解决了这个问题。