Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Scala中更改日期中的小时数_Scala - Fatal编程技术网

如何在Scala中更改日期中的小时数

如何在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

我想知道如何改变约会的时间

例如,如果日期是一个格式为“2015-06-06 00:00:00”的字符串,我想更改小时显示,使其成为“2015-06-06 07:00:00”


简单地说,我想将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”,然后我编辑的答案解决了这个问题。