java中时间戳和时间字符串之间的转换
获取当前的unix时间戳
new Date().getTime()/1000
System.currentTimeMillis()/1000
返回的是毫秒数,要/1000;
获取当前年月日以及时分秒
Calendar c = Calendar.getInstance();
c.get(Calendar.YEAR)) c.get(Calendar.YEAR)) c.get(Calendar.DATE)
将UNIX时间戳转换成时间字符串
new SimpleDateFormat("yyyy/MM/dd").format(new Date(timestamp*1000));
将时间字符串转换成UNIX时间戳
new java.text.SimpleDateFormat (”dd/MM/yyyy HH:mm:ss”).parse(”09/22/2008 16:33:00″).getTime()/1000
把当前时间加2周
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
long ldepDate = new Date().getTime() / 1000 + 3600 * 24 * 14; // 除1000
String depDate = sdf.format(new Date(ldepDate * 1000)); // 乘1000
在java中字符串和unix时间戳之间有一个中专类型是Date,但是注意有个1000
Date.getTime() 由Date到unixtime
new Date(unixtime) 由unixtime到Date
时区问题
String timezone_info = System.getProperty(”user.timezone”);
System.out.println(”当前的时区:”+timezone_info);
System.out.println(”时区信息:”+TimeZone.getDefault());
输出:
当前的时区:Asia/Shanghai
时区信息:sun.util.calendar.ZoneInfo[id="Asia/Shanghai",offset=28800000,dstSavings=0,useDaylight=false,transitions=19,lastRule=null]
处理不同的时区的方法:
SimpleDateFormat sd = new SimpleDateFormat(”yyyy-MM-dd HH:mm:ss”);
sd.setTimeZone(TimeZone.getTimeZone(”GMT+8″));
String strDate = sd.format(new Date(1215782027390L));
System.out.println(”正八区当前时间:”+strDate);
输出:
正八区当前时间:2008-07-11 21:13:47
php中时间戳和时间字符串之间的转换
获取当前的unix时间戳
time()
获取当前年月日以及时分秒
date('Y')-date('m')-date('d')
将UNIX时间戳转换成时间字符串
date("Y-m-d H:i:s", unixtime)
将时间字符串转换成UNIX时间戳
mktime($H, $i, $s, $Y, $m, $d);
strtotime ( string time [, int now])
echo strtotime ( "now" ), "/n" ;
echo strtotime ( "10 September 2000" ), "/n" ;
echo strtotime ( "+1 day" ), "/n" ;
echo strtotime ( "+1 week" ), "/n" ;
echo strtotime ( "+1 week 2 days 4 hours 2 seconds" ), "/n" ;
echo strtotime ( "next Thursday" ), "/n" ;
echo strtotime ( "last Monday" ), "/n" ;
时区问题
date_default_timezone_set('Etc/GMT-8');
echo date('Y-m-d h:m:s',time());
设置默认时区。
format 字符 | 说明 | 返回值例子 |
---|---|---|
a | 小写的上午和下午值 | am 或 pm |
A | 大写的上午和下午值 | AM 或 PM |
B | Swatch Internet 标准时 | 000 到 999 |
d | 月份中的第几天,有前导零的 2 位数字 | 01 到 31 |
D | 星期中的第几天,文本表示,3 个字母 | Mon 到 Sun |
F | 月份,完整的文本格式,例如 January 或者 March | January 到 December |
g | 小时,12 小时格式,没有前导零 | 1 到 12 |
G | 小时,24 小时格式,没有前导零 | 0 到 23 |
h | 小时,12 小时格式,有前导零 | 01 到 12 |
H | 小时,24 小时格式,有前导零 | 00 到 23 |
i | 有前导零的分钟数 | 00 到 59 > |
I | 是否为夏令时 | 如果是夏令时为 1 ,否则为 0 |
j | 月份中的第几天,没有前导零 | 1 到 31 |
l (“L”的小写字母) | 星期几,完整的文本格式 | Sunday 到 Saturday |
L | 是否为闰年 | 如果是闰年为 1 ,否则为 0 |
m | 数字表示的月份,有前导零 | 01 到 12 |
M | 三个字母缩写表示的月份 | Jan 到 Dec |
n | 数字表示的月份,没有前导零 | 1 到 12 |
O | 与格林威治时间相差的小时数 | 例如:+0200 |
r | RFC 822 格式的日期 | 例如:Thu, 21 Dec 2000 16:01:07 +0200 |
s | 秒数,有前导零 | 00 到 59 > |
S | 每月天数后面的英文后缀,2 个字符 | st ,nd ,rd 或者 th 。可以和 j 一起用。 |
t | 给定月份所应有的天数 | 28 到 31 |
T | 本机所在的时区 | 例如:EST ,MDT (【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。 |
U | 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 | 参见 time() |
w | 星期中的第几天,数字表示 | 0 (表示星期天)到 6 (表示星期六) |
W | ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) | 例如:42 (当年的第 42 周) |
Y | 4 位数字完整表示的年份 | 例如:1999 或 2003 |
y | 2 位数字表示的年份 | 例如:99 或 03 |
z | 年份中的第几天 | 0 到 366 |
Z | 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 | -43200 到 43200 |
mysql中时间戳和时间字符串之间的转换
获取当前的unix时间戳
now()
将时间字符串转换成UNIX时间戳
UNIX_TIMESTAMP(date)
将UNIX时间戳转换成时间字符串
DATE_FORMAT(date, format)
如何从数据库读取三天内的所有记录
首先表格里要有一个DATETIME字段记录时间,
格式为'2003-7-15 16:50:00'
SELECT * FROM `xx` WHERE TO_DAYS(NOW()) - TO_DAYS(`date`) <= 3;
根据format字符串格式化date值
%M 月名字(January……December)
%W 星期名字(Sunday……Saturday)
%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。)
%Y 年, 数字, 4 位
%y 年, 数字, 2 位
%a 缩写的星期名字(Sun……Sat)
%d 月份中的天数, 数字(00……31)
%e 月份中的天数, 数字(0……31)
%m 月, 数字(01……12)
%c 月, 数字(1……12)
%b 缩写的月份名字(Jan……Dec)
%j 一年中的天数(001……366)
%H 小时(00……23)
%k 小时(0……23)
%h 小时(01……12)
%I 小时(01……12)
%l 小时(1……12)
%i 分钟, 数字(00……59)
%r 时间,12 小时(hh:mm:ss [AP]M)
%T 时间,24 小时(hh:mm:ss)
%S 秒(00……59)
%s 秒(00……59)
%p AM或PM
%w 一个星期中的天数(0=Sunday ……6=Saturday )
%U 星期(0……52), 这里星期天是星期的第一天
%u 星期(0……52), 这里星期一是星期的第一天
%% 一个文字“%”。