2012年2月3日 星期五

date 日期格式化

阿都仔的日期表示方式多以: 日/月/年
英文裡的數,可以分為「基數」(one、two、three)與「序數」(第一first、第二second、第三third)
日期表示:
  • 1號、11號、21號、31號  英文 => 1st, 11st, 21st, 31st (數字後面加 st)
  • 2號、12號、22號 英文 = 2nd, 12nd, 22nd (數字後面加 nd)
  • 3號、13號、23號 英文 = 3rd, 13rd, 23rd (數字後面加 rd )
  • 其他的後面(4~9)加 "th" 就符合規則了如=> 19th, 24th, 8th



MYSQL
取得現在時間---------------
select DATE_FORMAT(NOW(),'%H:%s, %D %b., %Y')==> 09:01, 2nd Feb., 2012

符合 rfc822
$date=gmdate("D, d M Y H:i:s", $this->unix);
DATE_FORMAT(time,'%a, %d %b %y %k:%i:%s +0000')

PHP
取得現在時間---------------
echo date("Y/m/d H:i",time()); //其結果為2010/03/24 14:32
echo date("H:i,jS D.,Y"); //結果:11:38,6th Mon.,2012

PHP:
d - 幾日,兩位數字,若不足二位則前面補零; 如: "01" 至 "31"
j - 幾日,兩位數字,若不足二位不補零; 如: "1" 至 "31"
D - 星期幾,三個英文字母; 如: "Fri"
l - 星期幾,英文全名; 如: "Friday"
F - 月份,英文全名; 如: "January"
Y - 年份,四位數字; 如: "1999"
y - 年份,二位數字; 如: "99"
h - 12 時制的小時; 如: "01" 至 "12"
H - 24 時制的小時; 如: "00" 至 "23"
g - 12 時制的小時,不足二位不補零; 如: "1" 至 12"
G - 24 時制的小時,不足二位不補零; 如: "0" 至 "23"
i - 分鐘; 如: "00" 至 "59"
m - 月份,兩位數字,若不足二位則在前面補零; 如: "01" 至 "12"
n - 月份,兩位數字,若不足二位則不補零; 如: "1" 至 "12"
M - 月份,三個英文字母; 如: "Jan"
s - 秒數; 如: "00" 至 "59"
S - 字尾加英文序數,二個英文字母; 如: "th","nd"
t - 指定月份的天數; 如: "28" 至 "31"
U - 總秒數
w - 數字型的星期幾,如: "0" (星期日) 至 "6" (星期六)
z - 一年中的第幾天; 如: "0" 至 "365"

date('U',time())


主要是將文字日期改為Unix時間戳記

$ThisDay = '2008-01-01';
$ThisDay = strtotime($ThisDay); // 將日期轉為Unix時間戳記
echo date("Y-m-d",strtotime("now",$ThisDay)). "\n";
//顯示2008-01-01
echo date("Y-m-d",strtotime("+1 day",$ThisDay)). "\n";
//顯示2008-01-02
echo date("Y-m-d",strtotime("+1 week",$ThisDay)). "\n";
//顯示2008-01-08
echo date("Y-m-d",strtotime("+1 week 2 days 4 hours 2 seconds",$ThisDay)). "\n";
//顯示2008-01-10
echo date("Y-m-d",strtotime("next Thursday",$ThisDay)). "\n";
//顯示2008-01-03
echo date("Y-m-d",strtotime("last Monday",$ThisDay)). "\n";
//顯示2007-12-31
以上範例會有1970的問題
使用 date_default_timezone_set('UTC'); 可以解決
日期:2012-01-13 00:56:35
date("Y-m-d 00:00:00",strtotime("-1 week"))  //往前推七天 2012-01-06 00:00:00 


date('U',time()); 獲得現在的秒數

mktime(hour,minute,second,month,day,year,is_dst)
範例:今天往後算一個月的日子
$years  = date("Y");     
$months = date("m");     
$days  = date("d");     
$day  = date("Y-m-d",mktime(0,0,0,$months+1,$days,$years));

只有 小時與分鐘,所以mysql 的 unix_timestamp 不能用。

找出 開始與結束時間是否是一樣的

$ss_start=($_sHour * 60 + $_sMinute)*60; //秒
$ss_end=($_eHour * 60 + $_eMinute)*60; //秒

$sql="select * from `XXX` where TIME_TO_SEC( `start`)='$ss_start' and TIME_TO_SEC(`end`)='$ss_end' and auto='{$auto_id}'";

沒有留言: