java怎么判断是不是为时间戳
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java怎么判断是不是为时间戳相关的知识,希望对你有一定的参考价值。
我从前台传了一个字符串过来,它可能是2014-04-22 00:00:00,也可能是时间戳,因为时间戳不能再次转换成时间戳,所以会报错,我要怎么判断它传过来的是否是时间戳还是普通时间格式
参考技术A 时间戳分2种1.
java的时间戳,是long类型的,长度是13位,做判断的时候,先判断类型,再判断长度,之后再转成时间类型,如果都成功,证明这是一个时间戳
2.
数据库时间戳,这个java直接读取数据库,读取出来就是标准的时间戳类型 参考技术B 你想将它转换成时间后干嘛?
直接try
将字符串转换,成功的话就执行转换时间后的代码
catch
失败的话捕获异常说明该字符串就是时间戳不能转换,然后再执行为时间戳需要执行的代码
参考技术C 时间戳是指从1970年1月1日到现在的时间.通常为秒或者毫秒.
理论上任何一个int或者long都能解析成为一个时间.
如果一定要检测,则需要给定一个条件,比如从什么时候,到什么时候.可以比对判断. 参考技术D calendar
c_yestaday
=
calendar.getinstance();
c_yestaday=昨天的时间
int
aa=c_yestaday.add(c_yestaday
.day_of_year,
1);//昨天的天数加1
calendar
c_today=
calendar.getinstance();
c_today=jin天的时间
int
bb=c_today.day_of_week//今天的天数
最后判断aa和bb是否相等
如何在 Java 中将“HH:MM”格式字符串转换为时间戳?
【中文标题】如何在 Java 中将“HH:MM”格式字符串转换为时间戳?【英文标题】:How do I convert "HH:MM" format string to Timestamp in Java? 【发布时间】:2017-03-20 10:50:27 【问题描述】:我有一个字符串09:28.
,我想将此字符串转换为Timestamp
对象。
下面是我的代码:
Object d = getMappedObjectValue(reportBeamDataMap, ReportBeamConstant.DAT_STOPDATE);
Date stopDate1 = (Date)d;
SimpleDateFormat printFormat = new SimpleDateFormat("hh:mm");
String timeString = printFormat.format(stopDate1);
现在我想在String
上方作为Timestamp
(仅 HH:MM)。该怎么做?
【问题讨论】:
为什么不将stopDate1
转换为TimeStamp
而不是timeString
?
因为 stopDate1 也有日期和其他时间数据。我只想要 HH:MM。所以我先把它们串起来。但没关系,对象 d1 = getMappedObjectValue(reportBeamDataMap, ReportBeamConstant.DAT_STOPDATE);日期 stopDate12 = (日期)d1; SimpleDateFormat printFormat1 = new SimpleDateFormat("hh:mm");字符串 timeString1 = printFormat.format(stopDate1);时间戳 tm1 = new Timestamp(printFormat1.parse(timeString1).getTime());这工作得很好。谢谢
【参考方案1】:
如果您正在寻找今天 hh:mm 的时间戳,那么试试这个
static String todaysFtoTimestamp(String f)
long todaystimestamp = ((System.currentTimeMillis() / 86400000 ) * 86400 );
//System.out.println("today: " + todaystimestamp);
long todaysftimestamp = Integer.parseInt(fToTimestamp(f)) + todaystimestamp;
//System.out.println("todayF: " + todaysftimestamp);
return todaysftimestamp+"";
static String fToTimestamp(String f)
String[] fArray = f.split(":");
String r = "null hehe";
int hours = Integer.parseInt(fArray[0]);
int minutes = Integer.parseInt(fArray[1]);
r = String.valueOf((minutes + (hours * 60))*60);
return r ;
【讨论】:
【参考方案2】:您可以使用 LocalTime 来存储时间(来自字符串,反之亦然),如下所示:
选项(1):使用 Java8
这个可以使用Java8的LocalTime API,可以看here
String timeString = printFormat.format(stopDate1);
//Get your localTime object from timeString
LocalTime localTime = LocalTime.parse(timeString);
static LocalTime parse(CharSequence text) 获取一个实例 LocalTime 来自文本字符串,例如 10:15。
选项(2):不使用 Java8
需要用到jodatime库API,可以看here
【讨论】:
【参考方案3】:请使用 parse 方法获取 Date 对象,然后构造 Timestamp 对象。
try
Timestamp timestamp = new Timestamp(printFormat.parse(timeString).getTime());
catch (ParseException e)
e.printStackTrace();
【讨论】:
【参考方案4】:时间戳格式必须为 yyyy-mm-dd hh:mm:ss[.fffffffff]
您可以直接将日期对象转换为时间戳
Timestamp timestamp = new Timestamp(stopDate1.getTime());
【讨论】:
以上是关于java怎么判断是不是为时间戳的主要内容,如果未能解决你的问题,请参考以下文章
Hive/SparkSQL:如何将 Unix 时间戳转换为时间戳(不是字符串)?