30分求:long值转换为时间类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了30分求:long值转换为时间类型相关的知识,希望对你有一定的参考价值。

根据一个long值,如:long aa = 25978000;
返回一个时间:*小时*分*秒

自己写了个方法,直接用就行了

public class Test
public static void main(String[] args) throws Exception
long time = 25978000;
System.out.println(getTime(time));

public static String getTime(long time)
String str = "" ;
time = time / 1000;
int s = (int) (time % 60);
int m = (int) (time / 60 % 60);
int h = (int) (time / 3600);
str = h + "小时" + m + "分" + s +"秒";
return str ;

参考技术A 先把long型转换为日历日期型
long aa = 25978000;
Date date = new Date();
date.setTime(aa * 1000);
Calendar cal=Calendar.getInstance();
cal.setTime(date);

再通过日期类获取时分秒,并组合成你要的字符串
cal.HOUR、cal.MINUTE、cal.SECOND。
参考技术B long dd = 25978000;
Date d = new Date(dd);
SimpleDateFormat f = new SimpleDateFormat("HH:mm:ss");
System.out.println(f.format(d));
参考技术C long timeTemp = System.currentTimeMillis(); //25978000;
long time = timeTemp;
long mSec = time % 1000;
time /= 1000;
long year = time/(365*24*3600);
time = time%(365*24*3600);
long month = time/(30*24*3600);
time = time % (30*24*3600);
long day = time/(24*3600);
time = time % (24*3600);
long hour = time/3600;
time = time % 3600;
long min = time/60;
time = time % 60;
long sec = time;
System.out.println(timeTemp+"毫秒是:"+year+"年"+month+"月"+day+"天"+hour+"小时"+min+"分钟"+sec+"秒零"+mSec+"毫秒");

在 Oracle 中将 LONG 转换为时间戳 [重复]

【中文标题】在 Oracle 中将 LONG 转换为时间戳 [重复]【英文标题】:Conversion of LONG to Timestamp in Oracle [duplicate] 【发布时间】:2021-12-06 23:16:40 【问题描述】:

我有一个数据源以 LONG 整数格式发送 TIMESTAMP 数据,我们必须在 Oracle 中将其转换为 TIMESTAMP。我可以很容易地在 JAVA 中做到这一点。但是,我不确定如何在 ORACLE 中实现这一点。 TO_TIMESTAMP 给出了无效的月份错误。

Sample data - 1636070400000

Java sn-p

import java.sql.Timestamp;

public class MyClass 
    public static void main(String args[]) 
      long timeStamp = 1636070400000L;
        Timestamp stamp = new Timestamp(timeStamp);
      System.out.println("Timestamp is "+stamp);
    

sn-p 以上返回 - 2021-11-05 00:00:00.0

我希望在 SQL 中以类似格式输出以进一步操作数据 (YYYY-MM-DD HH24:MI:SS)。

【问题讨论】:

【参考方案1】:

这个值似乎是 Java/Javascript 时间戳,即从 1970-01-01 开始的毫秒数。试试这个:

SELECT TIMESTAMP '1970-01-01 00:00:00 UTC' + 1636070400000/1000 * INTERVAL '1' SECOND
FROM dual;

它返回 UTC 时间。如果您想获取当地时间,请使用

SELECT (TIMESTAMP '1970-01-01 00:00:00 UTC' + 1636070400000/1000 * INTERVAL '1' SECOND) AT LOCAL
FROM dual;

SELECT (TIMESTAMP '1970-01-01 00:00:00 UTC' + 1636070400000/1000 * INTERVAL '1' SECOND) AT 'Europe/Zurich'
FROM dual;

你也可以用NUMTODSINTERVAL(1636070400000/1000, 'second')代替INTERVAL字面量

【讨论】:

这是我当前使用的工作代码:to_date('01/01/1970','dd/mm/yyyy') + (1636070400000 / (1000 * 60 * 60 * 24)) @AliFidanli 这也很好。但是,结果以 UTC 时间给出。如果您想获取当地时间,那么结果是错误的。通过使用TO_DATE,您还可以减少可能需要的小数秒。 完全同意。只是想在看到问题时分享它:)

以上是关于30分求:long值转换为时间类型的主要内容,如果未能解决你的问题,请参考以下文章

js 中日期 转换成时间戳 例如2013-08-30 转换为时间戳

在 Oracle 中将 LONG 转换为时间戳 [重复]

在 Hive 中将 Long 转换为时间戳

如何将秒转换为时间格式? [复制]

在熊猫数据框中将纪元列值转换为时间

java怎么判断是不是为时间戳