
SystemcurrentTimeMillis() :返回当前系统的毫秒数,由于取得的是毫秒数,所以在处理UNIX时间戳的时候需要转换成秒
也就是:
long epoch = SystemcurrentTimeMillis()/1000;
方法:
1、获取当前系统的UNIX时间戳
Systemoutprintln("获取系统毫秒数方法1:"+LongtoString(new Date()getTime()));
Systemoutprintln("获取系统毫秒数方法2:"+LongtoString(SystemcurrentTimeMillis()));
注意:以上代码获取的都是系统毫秒数,在实际的 *** 作中我们一般都是记录毫秒说以求记录的精度,当处理UNIX时间戳的时候需要把数据进行处理。
2、将UNIX时间戳转换成系统可以处理的时间
Systemoutprintln(""+new javatextSimpleDateFormat("yyyy MM-dd HH:mm:ss")format(new javautilDate (1215782027390L)));
输出:2008 07-11 21:13:47
注意:此时处理的数据为系统毫秒不是UNIX时间戳
3、讲时间转换成UNIX时间戳
long epoch = new javatextSimpleDateFormat ("dd/MM/yyyy HH:mm:ss")parse("09/22/2008 16:33:00")getTime();
注意:
请注意!对与不同的时区处理上有差异,首先要清楚自己所在的时区。
String timezone_info = SystemgetProperty("usertimezone");
Systemoutprintln("当前的时区:"+timezone_info);
Systemoutprintln("时区信息:"+TimeZonegetDefault());
输出:
当前的时区:Asia/Shanghai
时区信息:sunutilcalendarZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
处理不同的时区的方法:
SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
sdsetTimeZone(TimeZonegetTimeZone("GMT+8"));
String strDate = sdformat(new Date(1215782027390L));
Systemoutprintln("正八区当前时间:"+strDate);
输出:
正八区当前时间:2008-07-11 21:13:47
如何在不同编程语言中获取现在的Unix时间戳(Unix timestamp)?
先上代码进行java时间转换成unix timestamp
[html] view plaincopy
import javatextDateFormat;
import javatextParseException;
import javatextSimpleDateFormat;
import javautilDate;
/
@author kongqz kongqingzhu@gmailcom
@version 创建时间:2013-2-19 上午10:21:47
/
public class TestUnixTime {
public static void main(String[] args) throws ParseException{
DateFormat df=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
//1361325960
long epoch = dfparse("2013-02-20 10:06:00")getTime();
Systemoutprintln("should be 1361325960 :"+epoch);
Date d=new Date();
String t=dfformat(d);
epoch=dfparse(t)getTime()/1000;
Systemoutprintln("t is :"+t+",unix stamp is "+epoch);
}
}
Java time
JavaScript Mathround(new Date()getTime()/1000)
getTime()返回数值的单位是毫秒
Microsoft NET / C# epoch = (DateTimeNowToUniversalTime()Ticks - 621355968000000000) / 10000000
MySQL SELECT unix_timestamp(now())
Perl time
PHP time()
PostgreSQL SELECT extract(epoch FROM now())
Python 先 import time 然后 timetime()
Ruby 获取Unix时间戳:Timenow 或 Timenew
显示Unix时间戳:Timenowto_i
SQL Server SELECT DATEDIFF(s, '1970-01-01 00:00:00', GETUTCDATE())
Unix / Linux date +%s
VBScript / ASP DateDiff("s", "01/01/1970 00:00:00", Now())
其他 *** 作系统
(如果Perl被安装在系统中) 命令行状态:perl -e "print time"
如何在不同编程语言中实现Unix时间戳(Unix timestamp) → 普通时间?
Java String date = new javatextSimpleDateFormat("dd/MM/yyyy HH:mm:ss")format(new javautilDate(Unix timestamp 1000))getTime();
JavaScript 先 var unixTimestamp = new Date(Unix timestamp 1000)然后 commonTime = unixTimestamptoLocaleString()
Linux date -d @Unix timestamp
MySQL from_unixtime(Unix timestamp)
Perl 先 my $time = Unix timestamp 然后 my ($sec, $min, $hour, $day, $month, $year) = (localtime($time))[0,1,2,3,4,5,6]
PHP date('r', Unix timestamp)
PostgreSQL SELECT TIMESTAMP WITH TIME ZONE 'epoch' + Unix timestamp) INTERVAL '1 second';
Python 先 import time 然后 timegmtime(Unix timestamp)
Ruby Timeat(Unix timestamp)
SQL Server DATEADD(s, Unix timestamp, '1970-01-01 00:00:00')
VBScript / ASP DateAdd("s", Unix timestamp, "01/01/1970 00:00:00")
其他 *** 作系统
(如果Perl被安装在系统中) 命令行状态:perl -e "print scalar(localtime(Unix timestamp))"
如何在不同编程语言中实现普通时间 → Unix时间戳(Unix timestamp)?
Java long epoch = new javatextSimpleDateFormat("dd/MM/yyyy HH:mm:ss")parse("01/01/1970 01:00:00");
JavaScript var commonTime = new Date(DateUTC(year, month - 1,day,hour,minute,second))
MySQL SELECT unix_timestamp(time)
时间格式: YYYY-MM-DD HH:MM:SS 或 YYMMDD 或 YYYYMMDD
Perl 先 use Time::Local 然后 my $time = timelocal($sec, $min, $hour, $day, $month, $year);
PHP mktime(hour, minute, second, day,month,year)
PostgreSQL SELECT extract(epoch FROM date('YYYY-MM-DD HH:MM:SS'));
Python 先 import time 然后 int(timemktime(timestrptime('YYYY-MM-DD HH:MM:SS', '%Y-%m-%d %H:%M:%S')))
Ruby Timelocal(year, month, day, hour,minute,second)
SQL Server SELECT DATEDIFF(s, '1970-01-01 00:00:00', time)
Unix / Linux date +%s -d"Jan 1, 1970 00:00:01"
VBScript / ASP DateDiff("s", "01/01/1970 00:00:00", time)
以系统当前时间为起点,得到昨天一天数据:
select from 表名 where Time<unix_timestamp(date(CURDATE())) and Time>=unix_timestamp(DATE_ADD(date(CURDATE()),INTERVAL -1 DAY))
确切的说不存在创建时间
若文件从创建后不曾修改过则可认为创建时间=修改时间
若文件创建后状态也不曾改变过则可认为创建时间=改变时间
若文件创建后不曾被读取过则可认为创建时间=访问时间
但是,上述情况基本上是不可能的,也就是说几乎不可能获取到文件的创建时间。
可以通过stat命令查看文件的状态,其中
访问时间(accesstime):读取一次文件的内容,该时间便会更新。比如对这个文件使用less命令或者more命令。(ls、stat这样的命令不会修改文件访问时间)
修改时间(modifytime):对文件内容修改一次便会更新该时间。例如使用vim等工具更改了文件内容并保存后,文件修改时间发生变化。通过ls –l列出的时间便是这个时间。要想看到文件访问时间可使用ls –ul命令。
改变时间(changetime):更改文件的属性便会更新该时间,比如使用chmod命令更改文件属性,或者执行其他命令时隐式的附带更改了文件的属性若文件大小等。
1日期函数UNIX时间戳转日期函数: from_unixtime语法:from_unixtime(bigint unixtime[, stringformat])
返回值: string
说明: 转化UNIX时间戳(从1970-01-0100:00:00 UTC到指定时间的秒数)到当前时区的时间格式
举例:
hive> select from_unixtime(1323308943,'yyyyMMdd') from dual;
20111208
2获取当前UNIX时间戳函数: unix_timestamp语法: unix_timestamp()
返回值: bigint
说明: 获得当前时区的UNIX
不用C语言编程序,直接运行命令:
ls -l 就可以看到文件的日期,然后用重定向方式可以直接生成一个结果文本文件
比如当前目录下:
#ls -l > filedatetxt
然后filedate的内容就是
-rx-r--r-- root root 196 2010-05-10 10:12 foundtxt
-rx-r--r-- root root 124 2010-05-15 19:36 hellocpp
这是获取所有文件的时间日期,如果要更精确的指向某一个文件,这样写:
#ls -l hellocpp >filedatetxt
这样结果文件内容就确定只有一行了:
-rx-r--r-- root root 124 2010-05-15 19:36 hellocpp
如果你坚持要编程序,可以这样写:
1、用bash,直接编辑一个文件比如mylsdate, 内容为:
ls -l $1 > $2
保存这个文件,并用命令chmod +x mylsdate使这个文件变成可执行脚本
用的时候像这样:
/mylsdate xhcpp filedatetxt
那么filedatetxt的内容就会变成
-rx-r--r-- root root 124 2010-05-15 19:36 hellocpp
2、用C,编辑程序mylsdatec
#include <stdioh>
#include <stdlibh>
int main(int argc, char argv[])
{
char cmd[80];
if (argc < 3) {
printf("usage: %s [file] [datefile]\n", argv[0]);
return 0;
}
sprintf(cmd, "ls -l %s > %s\n", argv[1], argv[2]);
system(cmd);
return 0;
}
然后用g++ -o mylsdate mylsdatec编译后,结果和上面的bash脚本完全一致
只要你不嫌麻烦
以上就是关于r语言 怎样把unix时间戳转换回时间全部的内容,包括:r语言 怎样把unix时间戳转换回时间、如何在不同编程语言中获取现在的Unix时间戳、如何mysql里直接取一个时间戳的前一天等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)