scala中的time.parse

docs.oracle.com/javase/8/docs/api/java/text/DateFormat.html#parse-java.lang.String-

简而言之就是把字符串的“日期”转为真正的日期。真正的日期会自带一些split的操作。


https://blog.csdn.net/u012940753/article/details/51218466?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.channel_param

最近做项目,需要把Date类型的日期转换成毫秒。

/**
    * 日期格式化函数,将日志中的日期进行格式化,按照分钟为最小单位,格式化成毫秒
    * @param line
    */
  private def formatData(line:Date)={
    val date=new SimpleDateFormat("yyyy-MM-dd H:mm:ss")
    val dateFormated=date.format(line)
    val dateFf=date.parse(dateFormated).getTime
    dateFf
  }

还需要将毫秒值转化成日期格式

/**
    *将毫秒值转换成日期格式
    */
  private def formatDateMillToMut(mill:Long)={
      val date=new Date(mill)
      date
  }

关于java.text.SimpleDateFormat的parse()方法存在的坑

https://blog.csdn.net/a158123/article/details/54292268

 

前言

在将字符串转为java.util.Date对象的时候,为了方便(主要是懒得做日期字符串的正则匹配)就干脆使用了java.text.SimpleDateFormatparse()方法。但是我发现parse()在解析日期字符串的时候本身存在一些问题。

问题代码

以下是出现问题的代码

DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try {
	Date date=df.parse("2016--1-01");
	System.out.println(date);
} catch (ParseException e) {
	e.printStackTrace();
}

分析

这段代码我想很多人认为应该是抛出异常吧,但是实际上这段代码的运行结果是
Sun Nov 01 00:00:00 CST 2015

经过源码的调试后才知道2016--1-01中,月份是可以作为负数识别的,既这个字符串被识别为20161月之前的2个月的第一天。(2个月是因为月份是从0开始计算的)

解决方案

解决方案如下:

DateFormat df=new SimpleDateFormat("yyyy-MM-dd");
try {
	Date date=df.parse("2016--1-01");
	//指定日期/时间解析是否不严格,默认是不严格(true)
	df.setLenient(false);
	System.out.println(date);
} catch (ParseException e) {
	e.printStackTrace();
}

ps:无法抛出异常是因为SimpleDateFormat类有自动运算日期功能, 只要将setLenient(Boolean boolean)设置为false,强制让他不进行日期运算,就可以检测出异常了。

上述内容官网也有说明。


scala 的时间方面的处理

cnblogs.com/xyt-cathy/p/6868795.html

最近开始写scala程序,发现scala和python的相似度极高,写一下scala时间方面的处理;

1、一个时间戳怎么转化成yyyyMMddHH的格式:

 

import java.text.SimpleDateFormat
import java.util.Date
import java.util.Calendar
import java.lang.Long
import java.util.TimeZone

def transformat(date:String,pattern:String):String ={
val myformat = new SimpleDateFormat(pattern)
myformat.setTimeZone(TimeZone.getTimeZone("GMT"+8))
val time=new Date(Long.valueof(date)*1000L)
myformat.format(time)}

2、怎么将进行时间加减

def addtime(date:String,num:Int):String ={ val myformat = new SimpleDateFormat("yyyyMMddHH") var dnow = new Date() if(date !=""){ dnow=myformat.parse(date)} var cal = Calendar.getInstance() cal.setTime(dnow) cal.add(Calendar.DAY_OF_MONTH,num) val newday= cal.getTime() myformat.format(newday) }

3、怎么对时间进行周末日判断

1

2

3

4

5

6

7

8

9

10

def isweekd(date:String,pattern:String):Int ={

val myformat = new SimpleDateFormat("pattern")

var dnow =new Date()

if(date !=""){

dnow =myformat.parse(date)}

val cal = Calendar.getInstance()

cal.setTime(dnow)

val week=cal.get(Calendar.DAY_OF_WEEK)

if (week ==1 || week==7){0}

else{1}}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值