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

时间:2015-08-21 15:11:03

标签: scala

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

例如,如果日期是“2015-06-06 00:00:00”形式的字符串,我想更改小时方面,使其变为“2015-06-06 07:00:00”

所以简单地说,我想解析Scala一串日期,然后改变它的小时。

5 个答案:

答案 0 :(得分:1)

给定日期字符串模式" 2015-06-06 00:00:00",您想要更改它的小时。

您需要做的两件事:将字符串解析为日期,涉及 SimpleDateFormat ;然后修改它的小时,日历有很多方法可以修改年,月......,所以你可以尝试一下。

以下是我如何完成它。

Josh@laptop:~$ find josh
josh
josh/a
josh/b
josh/f1
josh/f2
josh/is
josh/is/awesome
josh/is/awesome/e
josh/is/awesome/t

答案 1 :(得分:1)

我们可以通过以下操作使其非常简单:

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

答案 2 :(得分:1)

如果您要调整小时(加或减),则需要将String转换为DateTime格式,以便获得正确的新日期和时间。

如果您只想操纵String,那么patch()将会做到。

"2015-06-06 00:00:00".patch(11,"07",2)  //res0: String = 2015-06-06 07:00:00

答案 3 :(得分:0)

您可以使用java中的simpleDateFormat类。谷歌会帮助你。 注意,你也可以导入joda-time java jar,它在功能方面非常丰富。

答案 4 :(得分:0)

塞缪尔,

尝试添加这样的小时数。

WITH month_direction as (
    SELECT 
        Day([SampleDateTime]) AS [Date], 
        Round([WD Avg 2min],0) AS  WindDir,
        Count(Round([WD Avg 2min],0)) AS [Count]
    FROM 
        WeatherData
    WHERE 
        (((Year([SampleDateTime]) * 12 + DatePart("m", [SampleDateTime])) = Year(Date()) * 12 + DatePart("m", Date()) - 0))
    GROUP BY 
        Day([SampleDateTime]), Round([WD Avg 2min],0)
    ORDER BY 
        Day([SampleDateTime]), Count(Round([WD Avg 2min],0)) DESC
),
max_count as (
    SELECT *, row_number() OVER (PARTITION BY date ORDER BY Count desc) as rnum
    FROM month_direction 
)
SELECT *
FROM max_count 
WHERE rnum = 1

此链接有很好的描述。

http://joda-time.sourceforge.net/quickstart.html