javascript時間戳和日期字符串相互轉換:
<html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><script type="text/javascript">// 獲取當前時間戳(以s為單位)var timestamp = Date.parse(new Date());timestamp = timestamp / 1000;//當前時間戳為:1403149534console.log("當前時間戳為:" + timestamp);// 獲取某個時間格式的時間戳var stringTime = "2014-07-10 10:21:12";var timestamp2 = Date.parse(new Date(stringTime));timestamp2 = timestamp2 / 1000;//2014-07-10 10:21:12的時間戳為:1404958872console.log(stringTime + "的時間戳為:" + timestamp2);// 將當前時間換成時間格式字符串var timestamp3 = 1403058804;var newDate = new Date();newDate.setTime(timestamp3 * 1000);// Wed Jun 18 2014console.log(newDate.toDateString());// Wed, 18 Jun 2014 02:33:24 GMTconsole.log(newDate.toGMTString());// 2014-06-18T02:33:24.000Zconsole.log(newDate.toISOString());// 2014-06-18T02:33:24.000Zconsole.log(newDate.toJSON());// 2014年6月18日console.log(newDate.toLocaleDateString());// 2014年6月18日 上午10:33:24console.log(newDate.toLocaleString());// 上午10:33:24console.log(newDate.toLocaleTimeString());// Wed Jun 18 2014 10:33:24 GMT+0800 (中國標準時間)console.log(newDate.toString());// 10:33:24 GMT+0800 (中國標準時間)console.log(newDate.toTimeString());// Wed, 18 Jun 2014 02:33:24 GMTconsole.log(newDate.toUTCString());Date.prototype.format = function(format) {var date = {"M+": this.getMonth() + 1,"d+": this.getDate(),"h+": this.getHours(),"m+": this.getMinutes(),"s+": this.getSeconds(),"q+": Math.floor((this.getMonth() + 3) / 3),"S+": this.getMilliseconds()};if (/(y+)/i.test(format)) {format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));}for (var k in date) {if (new RegExp("(" + k + ")").test(format)) {format = format.replace(RegExp.$1, RegExp.$1.length == 1? date[k] : ("00" + date[k]).substr(("" + date[k]).length));}}return format;}console.log(newDate.format('yyyy-MM-dd h:m:s'));</script>
寫過PHP+MySQL的程序員都知道有時間差,UNIX時間戳和格式化日期是我們常打交道的兩個時間表示形式,Unix時間戳存儲、處理方便,但是不直觀,格式化日期直觀,但是處理起來不如Unix時間戳那么自如,所以有的時候需要互相轉換,下面給出互相轉換的幾種轉換方式。
一、在MySQL中完成
這種方式在MySQL查詢語句中轉換,優(yōu)點是不占用PHP解析器的解析時間,速度快,缺點是只能用在數(shù)據(jù)庫查詢中,有局限性。
1. UNIX時間戳轉換為日期用函數(shù): FROM_UNIXTIME()
一般形式:select FROM_UNIXTIME(1156219870);
2. 日期轉換為UNIX時間戳用函數(shù): UNIX_TIMESTAMP()
一般形式:Select UNIX_TIMESTAMP('2006-11-04 12:23:00′);
舉例:mysql查詢當天的記錄數(shù):
$sql=”select * from message Where DATE_FORMAT(FROM_UNIXTIME(chattime),'%Y-%m-%d') = DATE_FORMAT(NOW(),'%Y-%m-%d') order by id desc”;
當然大家也可以選擇在PHP中進行轉換,下面說說在PHP中轉換。
二、在PHP中完成
這種方式在PHP程序中完成轉換,優(yōu)點是無論是不是數(shù)據(jù)庫中查詢獲得的數(shù)據(jù)都能轉換,轉換范圍不受限制,缺點是占用PHP解析器的解析時間,速度相對慢。
1. UNIX時間戳轉換為日期用函數(shù): date()
一般形式:date('Y-m-d H:i:s', 1156219870);
2. 日期轉換為UNIX時間戳用函數(shù):strtotime()
一般形式:strtotime('2010-03-24 08:15:42');
php日期轉時間戳,指定日期轉換成時間戳
php日期轉時間戳、指定日期轉換成時間戳,PHP定時任務。
這兩天要實現(xiàn)這樣功能:
當達到某一條件時,讓服務器發(fā)短信給用戶,數(shù)量為多條。
基本思路:linux 定時掃描,若有滿足條件的用戶,則發(fā)送短信。
但為了防止打擾到用戶,要求只能在白天8:00-20:00發(fā)送短信,怎么樣獲得到每天的這段時間區(qū)間?
如下代碼:
<? $y=date("Y",time()); $m=date("m",time()); $d=date("d",time()); $start_time = mktime(9, 0, 0, $m, $d ,$y); $end_time = mktime(19, 0, 0, $m, $d ,$y); $time = time(); if($time >= $start_time && $time <= $end_time) { // do something.... } ?>
Java | time |
JavaScript |
Math.round(new Date().getTime()/1000) getTime()返回數(shù)值的單位是毫秒 |
Microsoft .NET / C# | epoch = (DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000000 |
MySQL | SELECT unix_timestamp(now()) |
Perl | time |
PHP | time() |
PostgreSQL | SELECT extract(epoch FROM now()) |
Python | 先 import time 然后 time.time() |
Ruby |
獲取Unix時間戳:Time.now 或 Time.new 顯示Unix時間戳:Time.now.to_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()) |
其他操作系統(tǒng) (如果Perl被安裝在系統(tǒng)中) |
命令行狀態(tài):perl -e "print time" |
Java | String date = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").format(new java.util.Date(Unix timestamp * 1000)) |
JavaScript | 先 var unixTimestamp = new Date(Unix timestamp * 1000) 然后 commonTime = unixTimestamp.toLocaleString() |
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 然后 time.gmtime(Unix timestamp) |
Ruby | Time.at(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") |
其他操作系統(tǒng) (如果Perl被安裝在系統(tǒng)中) |
命令行狀態(tài):perl -e "print scalar(localtime(Unix timestamp))" |
Java | long epoch = new java.text.SimpleDateFormat("dd/MM/yyyy HH:mm:ss").parse("01/01/1970 01:00:00"); |
JavaScript | var commonTime = new Date(Date.UTC(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, month, day, year) |
PostgreSQL | SELECT extract(epoch FROM date('YYYY-MM-DD HH:MM:SS')); |
Python | 先 import time 然后 int(time.mktime(time.strptime('YYYY-MM-DD HH:MM:SS', '%Y-%m-%d %H:%M:%S'))) |
Ruby | Time.local(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) |
如對本文有疑問,請?zhí)峤坏浇涣髡搲瑥V大熱心網(wǎng)友會為你解答??! 點擊進入論壇