scala 时间、时间戳系列操作

Scala实用技巧:操作日期与时间 在java.time包中,LocalDate和类提供了一系列便捷的方法来进行日期时间的加减运算。我们可以使用plus方法和minus方法来实现这一功能。plus方法:这个方法用于在现有日期时间基础上增加一个时间段。例如,可以增加天数。minus方法:与plus方法相对,这个方法用于减少一个时间段。例如,可以减少周数。在进行日期加减操作时,我们经常会遇到所谓的边界问题。这类问题包括但不限于:日期加减导致的天数变化,如2月的29日加一天变成3月1日。 阅读详情

格式说明:

LetterDate or Time ComponentPresentationExamples
GEra designatorTextAD
yYearYear1996; 96
YWeek yearYear2009; 09
MMonth in yearMonthJuly; Jul; 07
wWeek in yearNumber27
WWeek in monthNumber2
DDay in yearNumber189
dDay in monthNumber10
FDay of week in monthNumber2
EDay name in weekTextTuesday; Tue
uDay number of week (1 = Monday, ..., 7 = Sunday)Number1
aAm/pm markerTextPM
HHour in day (0-23)Number0
kHour in day (1-24)Number24
KHour in am/pm (0-11)Number0
hHour in am/pm (1-12)Number12
mMinute in hourNumber30
sSecond in minuteNumber55
SMillisecondNumber978
zTime zoneGeneral time zonePacific Standard Time; PST; GMT-08:00
ZTime zoneRFC 822 time zone-0800
XTime zoneISO 8601 time zone-08; -0800; -08:00

格式示例:

Date and Time PatternResult
"yyyy.MM.dd G 'at' HH:mm:ss z"2001.07.04 AD at 12:08:56 PDT
"EEE, MMM d, ''yy"Wed, Jul 4, '01
"h:mm a"12:08 PM
"hh 'o''clock' a, zzzz"12 o'clock PM, Pacific Daylight Time
"K:mm a, z"0:08 PM, PDT
"yyyyy.MMMMM.dd GGG hh:mm aaa"02001.July.04 AD 12:08 PM
"EEE, d MMM yyyy HH:mm:ss Z"Wed, 4 Jul 2001 12:08:56 -0700
"yyMMddHHmmssZ"010704120856-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSZ"2001-07-04T12:08:56.235-0700
"yyyy-MM-dd'T'HH:mm:ss.SSSXXX"2001-07-04T12:08:56.235-07:00
"YYYY-'W'ww-u"2001-W27-3
"自由输入YYYY-'爱你哦'ww-u自由输入"自由输入2001-爱你哦27-3自由输入
import java.text.SimpleDateFormat
import java.util.{Calendar, Date}

/**
      * 获取当前时间
      *
      * @param pattern pattern 如"yyyyMMddHHmmss"
      * @return
      */
    def getrealTime(pattern: String): String = {
        val timeTag = System.currentTimeMillis()
        val changeTime = new Date(timeTag)
        val dataFormat = new SimpleDateFormat(pattern)
        dataFormat.format(changeTime)
    }

/**
      * 获取当前时间戳(精确到毫秒)
      *
      * @return
      */
    def getTimestamp(): Long = {
        val time = Util.getrealTime("yyyyMMddHHmmss")
        Util.funStringToTimeStamp(time, "yyyyMMddHHmmss")
    }




    /**
      * 将时间字符串修改为时间戳
      *
      * @param time          时间
      * @param timeFormatted 时间格式 如 "yyyyMMddHHmmss"
      * @return 精确到毫秒的时间戳
      */
    def funStringToTimeStamp(time: String, timeFormatted: String): Long = {
        val fm = new SimpleDateFormat(timeFormatted)
        val dt = fm.parse(time)
        dt.getTime
    }

    /**
      * 将时间戳转换为时间
      *
      * @param timestamp     精确到毫秒
      * @param timeFormatted 时间格式如“HH”表示按24小时制返回时间戳对应的小时
      * @return
      */
    def timestampToString(timestamp: String, timeFormatted: String): String = {
        val fm = new SimpleDateFormat(timeFormatted)
        val time = fm.format(new Date(timestamp.toLong))
        time
    }
 /**
      * 获取传入日期与当前日期的天数差
      *
      * @param day          待比较日期(仅包含月日)
      * @param dayFormatted 待比较日期格式(例如:MMdd或MM-dd)
      * @return
      */
    def daysBetweenToday(day: String, dayFormatted: String): Int = {
        val calendar = Calendar.getInstance
        calendar.setTime(new Date())
        val today = calendar.get(Calendar.DAY_OF_YEAR)
        val year = calendar.get(Calendar.YEAR)
        val inputF = new SimpleDateFormat("yyyy" + dayFormatted)
        val date = inputF.parse(year + day)
        calendar.setTime(date)
        val inputDay = calendar.get(Calendar.DAY_OF_YEAR)
        var days = today - inputDay
        if (days < 0) {
            val beforeYearDate = inputF.parse((year - 1) + day)
            calendar.setTime(beforeYearDate)
            days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR) - calendar.get(Calendar.DAY_OF_YEAR) + today
        }
        return days
    }

/**
      * 将毫秒级时间戳转化成分钟级时间戳
      *
      * @param time 毫秒级时间戳
      * @return 分钟级时间戳
      */
    def getMinTimestamp(time: Long): Long = {
        val minTime = time / (1000 * 60)
        minTime
    }

  /**
      * 将时间字符串修改为格式
      *
      * @param inpuTime        输入时间
      * @param inputFormatted  输入时间格式
      * @param outputFormatted 输出时间格式
      * @return
      */
    def formatTime(inpuTime: String, inputFormatted: String, outputFormatted: String): String = {
        val inputF = new SimpleDateFormat(inputFormatted)
        val outputF = new SimpleDateFormat(outputFormatted)
        val inputT = inputF.parse(inpuTime)
        outputF.format(inputT)
    }


/**
      * 获取传入时间戳的天数差
      *
      * @param t1 较小时间戳
      * @param t2 较大时间戳
      * @return
      */
    def caculate2Days(t1: Long, t2: Long): Int = {
        import java.util.Calendar
        val calendar = Calendar.getInstance
        calendar.setTimeInMillis(t2)
        val t2Day = calendar.get(Calendar.DAY_OF_YEAR)
        calendar.setTimeInMillis(t1)
        val t1Day = calendar.get(Calendar.DAY_OF_YEAR)
        var days = t2Day - t1Day
        if (days < 0) {
            days = calendar.getActualMaximum(Calendar.DAY_OF_YEAR) - t1Day + t2Day
        }
        return days;
    }

    /**
      * 判断nowTime是否在startTime与endTime之间
      * @param nowTime
      * @param startTime
      * @param endTime
      * @param formater
      * @return
      */
    def isBetweenDate(nowTime: String, startTime: String, endTime: String, formater: String): Boolean = {
        val df = new SimpleDateFormat(formater)
        val nowDate = df.parse(nowTime)
        val startDate = df.parse(startTime)
        val endDate = df.parse(endTime)
        if ((nowDate.getTime == startDate.getTime) || (nowDate.getTime == endDate.getTime)) return true
        if (nowDate.after(startDate) && nowDate.before(endDate)) {
            true
        } else {
            false
        }
    }

     


 /**
      * 时间增加天数,返回时间
      *
      * @param date 入参时间
      * @param num  增加的天数
      * @return
      */
    def funAddDate(date: String, num: Int): String = {
        val myformat = new SimpleDateFormat("yyyyMMdd")
        var dnow = new Date()
        dnow = myformat.parse(date)
        val cal = Calendar.getInstance()
        cal.setTime(dnow)
        cal.add(Calendar.DAY_OF_MONTH, num)
        val newday = cal.getTime
        myformat.format(newday)
    }

    /**
      * 时间增加小时,返回时间
      *
      * @param date 入参时间
      * @param num  增加的天数
      * @return
      */
    def funAddHour(date: String, num: Int): String = {
        val myformat = new SimpleDateFormat("yyyyMMddHH")
        var dnow = new Date()
        dnow = myformat.parse(date)
        val cal = Calendar.getInstance()
        cal.setTime(dnow)
        cal.add(Calendar.HOUR, num)
        val newday = cal.getTime
        myformat.format(newday)
    }

/**
      * 时间增加分钟,返回时间
      *
      * @param date 入参时间
      * @param num  增加的分钟数
      * @return
      */
    def funAddMinute(date: String, num: Int): String = {
        val myformat = new SimpleDateFormat("yyyyMMddHHmm")
        var dnow = new Date()
        dnow = myformat.parse(date)
        val cal = Calendar.getInstance()
        cal.setTime(dnow)
        cal.add(Calendar.MINUTE, num)
        val newday = cal.getTime
        myformat.format(newday)
    }
 /**
      * 时间增加秒,返回时间
      *
      * @param date 入参时间
      * @param num  增加的秒数
      * @return
      */
    def funAddSecond(date: String, num: Int, format: String): String = {
        val myformat = new SimpleDateFormat(format)
        var dnow = new Date()
        dnow = myformat.parse(date)
        val cal = Calendar.getInstance()
        cal.setTime(dnow)
        cal.add(Calendar.SECOND, num)
        val newday = cal.getTime
        myformat.format(newday)
    }


    /** 获取过去几天的时间数组
      *
      * @param date
      * @param num
      * @return
      */
    def getPastDays(date: String, num: Int): Array[String] = {
        val buffer = new ArrayBuffer[String]()
        val range = 0 until num
        for(i <- range){
            buffer.append(funAddDate(date,-i))
        }
        buffer.toArray
    }

    /** 获取过去几小时的时间数组
      *
      * @param date
      * @param num
      * @return
      */
    def getPastHours(date: String, num: Int, interval:Int): Array[String] = {
        val buffer = new ArrayBuffer[String]()
        val range = 0 until num
        for(i <- range){
            buffer.append(funAddHour(date,-i*interval))
        }
        buffer.toArray
    }



 

焊缝缺陷智能检测:基于 YOLO 的工业质检系统实战 从焊缝缺陷数据集的构建到模型训练,从桌面检测界面到缺陷统计输出,本文覆盖了一套工业焊缝质检系统的完整路线。这个场景的核心难点在数据层面——气孔和裂纹这类小目标的标注质量直接决定了模型的最终表现。建议先在开源数据集上跑通全链路,确认 mAP 达到可接受的水平后,再通过补充特定类型的小目标数据和提升输入分辨率来做精度优化。工业场景中,漏检一个气孔的成本和误报一个假阳性的成本不一样——根据对两类成本的承受力,调整置信度阈值来找到业务上的最佳平衡点。 阅读详情

相关推荐

Kotlin原生AI Agent框架Koog:为JVM开发者打造类型安全、企业级智能体开发方案

AI Agent作为当前人工智能应用开发的核心范式,通过赋予大语言模型(LLM)自主规划、工具调用和环境交互能力,正在重塑软件智能化进程。其技术原理基于智能体架构,通过提示工程、函数调用和记忆机制,将LLM从单纯的文本生成器转变为能够执行复杂任务的工作流引擎。这一技术价值在于显著降低了构建智能应用的开发门槛,同时保持了高度的灵活性和可扩展性。在实际应用场景中,AI Agent广泛落地于智能客服、代码助手、数据分析自动化等领域,成为连接大模型能力与具体业务需求的关键桥梁。本文聚焦的Koog框架,正是针对JVM

weixin_42594419的博客 395

scala对时间(date)字符串转化为时间戳timestamp的实现

在scala编程中,想实现从字符串转化为timestamp的过程中,查找相关资料,才发现资料还是不多。因此在这里将实现过程记录一下。 (注:这种应用情况非常广泛,如从文件中解析某个时间字符串,转化为时间戳再存到HIVE中) 首先写一个转换的函数。 import java.sql.Timestamp import java.text.SimpleDateFormat import

大数据挖掘SparkExpert的博客 2万+

二、ROS2完成Docker容器和宿主机通信,使用ros2 topic list看到,但是无法echo

如果容器和主机权限不一致,则会导致无法通信(我的代码中,docker容器是root,宿主机是普通用户),虽然可以查询到相关话题,但是订阅后没有消息输出。比如,docker容器创建了一个共享内存,其所有者为docker容器用户root,当宿主机去访问的时候,由于用户不同,没有权限访问,也就无法进行信息传递。该方法只是临时修改共享内存的权限,每次运行完,需要重新运行上述命令,才可以进行通信。在运行的过程中,ROS2使用了共享内存机制,会共享内存。运行之后,宿主机和容器可能用户名不同,这是因为。

qq_43280851的博客 1265

Scala - 时间工具类 LocalDateTime 常用方法整理

Scala / Java LocalDateTime 常用方法整理。

BITDDD小栈 6298

DLL导出函数名隐藏实战:三种方法保护代码安全

在Windows软件开发中,动态链接库(DLL)的导出函数名是模块间通信的关键标识,也是逆向工程的重要突破口。理解PE文件格式中的导出表结构是掌握DLL工作原理的基础,它记录了函数地址、名称和序号的映射关系。通过隐藏或混淆这些导出名称,可以有效增加代码分析的难度,提升软件的知识产权保护和安全性。这一技术在软件保护、游戏反作弊和安全组件中具有重要价值。本文聚焦DLL导出函数名隐藏,结合Dependencies工具分析,详细解析仅序号导出、导出转发器和运行时动态修改三种实用方案,为开发者提供从原理到实践的完整指

weixin_29315091的博客 307

关于无障碍适配的笔记

针对无障碍兼容性的笔记,针对wcg2.0/2.1

CoffeeAndIce的博客 4217

Scala 获取时间,时间戳,时间差

经常遇到处理时间与获取当前时间,记录一下: 1.获取时间 1)获取当前时间 dateFormat规定好想要的数据格式 常用的对应如下: 格式 yyyy MM dd HH mm ss 对应 年 月 日 小时 分钟 秒 编程中常用的: 常用模式 yyyyMMdd yyyy-MM-dd ...

BITDDD小栈 1万+

第三篇:AMD 和 Intel

它像“乐高积木”一样,可以通过标准化的接口与其他部分组合,构建复杂系统。理解组件后,你会发现从操作系统到微服务,现代软件本质上都是组件的组合!

u013089100的博客 1031

时间转换函数(scala)

【代码】时间转换函数(scala)

m0_65850671的博客 572

普中科技ESP8266-01s模块CWJAP:3 FAIL报错?手把手教你用AT+CWSAP指令搞定WiFi配置

本文详细解析了普中科技ESP8266-01s模块常见的CWJAP:3 FAIL报错问题,并提供了通过AT+CWSAP指令正确配置WiFi的实战解决方案。文章涵盖错误根源分析、硬件连接指南、AT指令详解及高级调试技巧,帮助开发者快速解决ESP8266-01s模块的WiFi配置难题。

weixin_42653691的博客 202

ADBC 全面解析:ABAP 开发者玩转 Native SQL 的实战指南

本文介绍了 SAP ABAP 中的 ADBC(ABAP Database Connectivity)技术,它是一种基于 ABAP 面向对象的类库,用于访问 Native SQL 接口。与 Open SQL 和 EXEC SQL 相比,ADBC 具有以下优势:支持特定数据库语法、可访问二级数据库连接、执行多种 SQL 操作且语法更 ABAP 化。文章通过示例展示了 ADBC 的基本用法,包括创建语句对象、执行查询和处理结果集。建议在需要数据库特有功能或二级连接时优先使用 ADBC,同时提供封装类来简化调用。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 307

scala时间处理及其他代码块

1.时间戳(毫秒)转时间 var time2 = 1541827261631d; var result2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time2) println(result2) 普通显示的 //long timeStamp = 1495777335060;//直...

weixin_30675247的博客 195

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

scala 时间,时间格式转换

scala 时间,时间格式转换1.scala 时间格式转换(String、Long、Date)1.1时间字符类型转Date类型1.2Long类型转字符类型1.3时间字符类型转Long类型2.scala 时间和时间戳互转2.1时间转换为时间戳2.2时间戳转化为时间 1.scala 时间格式转换(String、Long、Date) 1.1时间字符类型转Date类型 import java.text.S...

爱是与世界平行 7325

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

hive中获取日期与时间戳和当前时间戳

hive中获取日期与时间戳和当前时间戳 hive中的函数,日期转时间戳代码, select unix_timestamp('2020-01-16 17:02:00'); 表格实现 +-------------+ | _c0 | +-------------+ | 1579212120 | +-------------+ hive中的时间转时间戳函数(不加引号)第二个参数为默认...

weixin_45896475的博客 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

基于Scala实现根据指定时间戳开始消费Kafka的数据

import java.text.SimpleDateFormat import java.util.Properties import java.util.concurrent.{Callable, Executors, FutureTask} import org.apache.kafka.clients.consumer.KafkaConsumer import org.apache.ka...

qq_40625030的博客 1773

Scala 将时间字符串转为时间戳

Scala 将时间字符串转为时间戳

dai451954706的专栏 2万+

scala时间处理-获取今天日期,昨天日期,本周时间,本月时间,时间戳转换日期,时间比较

因为做一个考勤系统,需要用到scala的时间和日期的处理,包括 获取今天日期,昨天日期,本周时间,本月时间,时间戳转换日期等,特此总结了一下。 1、获取今天日期 def getNowDate():String={ var now:Date = new Date() var dateFormat:SimpleDateFormat = new SimpleDateFormat("

springlustre的专栏 6万+

scala 使用java8的LocalDateTime实现字符串和时间戳的互换

将字符串转换为时间戳 def coverStringTimeToLong(time:String): Long ={ val format = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss") val parse = LocalDateTime.parse(time, format) //getEpochSecond...

weixin_43015677的博客 659

scala 时间戳比较大小

scala,时间戳比较大小,三个参数:currentTime:String,starTime:String,endTime:String

小菜鸟 望大神多多指教 4705

Scala 将时间戳转成指定时区的时间(UTC时间)

Scala 将时间戳转成指定时区的时间(UTC时间)欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图...

weixin_39031707的博客 2743

scala时间处理

获取今天日期,昨天日期,本周时间,本月时间,时间戳转换日期,时间比较 分类: scala 2015-08-04 10:40 478人阅读 评论(0) 收藏 举报 scala时间戳转换 因为做一个考勤系统,需要用到scala的时间和日期的处理,包括 获取今天日期,昨天日期,本周时间,本月时间,时间戳转换日期时间比较计算时间差等,特此总结了一下。 1、获取今天日期

w_j_w2010的博客 4239

Scala时间格式转换

val DATE_FORMAT = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") 获取Date val cal = Calendar.getInstance() val date: Date = cal.getTime println(date) // Sat Sep 07 06:10:39 CST 2019 val date: Date = n...

L, there! 1750

scala 使用时间戳与时间互相转换类

借助java中的Date与Calendar实现时间类型互相转换 时间戳:与1970年间隔的毫秒数-1621337596326 时间string类型常见形式:“2021-05-18 19:33:16” 1.获取当前时间 2.获取昨天日期 3.计算时间差 4.指定日期和间隔天数,返回指定日期前N天的日期 date - N days 5.指定日期和间隔小时,返回指定日期前N小时的日期 date - N days 6.指定日期和间隔小时,返回指定日期后N小时的日期 date - N days 7.时间与时间戳互相

qq_38142901的博客 2709

用Scala处理时间和时间戳互换

时间转换为时间戳 import java.text.SimpleDateFormat object test { def main(args: Array[String]): Unit = { val tm = "2017-08-01 16:44:32" val a = tranTimeToLong(tm) println(a) } def tran...

为一个人走几座城 8610

scala spark 数据对比_使用Scala获取Spark数据集中与最新时间戳对应的行

我对Spark和Scala相对较新.我有一个数据帧,其格式如下:| Col1 | Col2 | Col3 | Col_4 | Col_5 | Col_TS | Col_7 || 1234 | AAAA | 1111 | afsdf | ewqre | 1970-01-01 00:00:00.0 | false || 1234 | AAAA | 1111 | e...

weixin_42395725的博客 226
上一篇: shell上启动spark
下一篇: 从决策树到GBDT
Code_LT
博客等级 码龄10年 307粉丝 182原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值