Hỏi về cách set global timestamp trong PHP

46 views
Skip to first unread message

Do Nam Khanh

unread,
Dec 23, 2009, 10:47:29 AM12/23/09
to phpvi...@googlegroups.com
Hi all,

Em đang gặp 1 vấn đề & chưa tìm ra cách giải quyết nên post lên đây mong mọi người giúp đỡ.

Chẳng là em đang phải làm phần liên quan đến invoice & nó có 1 số rule về thanh toán (hàng tuần, hàng tháng...). Mỗi lần geninvoice lại phải điều chỉnh system time hơi bất tiện, em muốn thiết lập 1 test mode để có thể tùy chỉnh ngày giờ (cộng vài chục ngày, tháng năm... có thể set bằng PHP hay .htaccess cũng được)

Vấn đề đặt ra là làm thế nào để set cái timestamp này chỉ 1 lần, để từ đó về sau tất cả các hàm về date time trong PHP sẽ tự động dùng cái timestamp mình đã set đấy như là 1 tham số mặc định?

Mã có dạng như sau:
ini_set('timestamp', "+1 month");

$now   = date('Y-m-d H:i:s'); //khi chạy sẽ tương đương với date('Y-m-d H:i:s', strtotime("+1 month"));

list($startDate, $endDate) = getDateRange();

$query   = "SELECT * FROM booking WHERE buy_date BETWEEN $startDate AND $endDate";
$results = fetchAll($query);
foreach($results as $result)
{
    if($now > strtotime($result->buy_date))
    {
        ....
    }
}

Xin cảm ơn & mong nhận được hồi âm của mọi người :)

pcdinh

unread,
Dec 25, 2009, 11:02:00 AM12/25/09
to PHPVietnam
Không có cách nào làm như vậy cả ở cấp độ engine. Một trong các lý do
là nó làm sai lệch kết quả tính toán theo một cách hết sức ngớ ngẩn
khi mà trong date('Y-m-d H:i:s'); vì mặt manual chỉ rõ là format thời
gian hiện tại theo 'Y-m-d H:i:s' thì hóa ra lại cho kết quả của một
tháng sau đó. PHP ko thể chấp nhận việc xử lý kết quả sai lệch như vậy
ở cấp độ hệ thống khi mà nó làm sai lệch kết quả một cách ko mong muốn
ở các thư viện đi kèm

Em có thể tạo ra một lớp DateFormatter để tạo ra một format có hiệu
lực trên những chỗ mà em dùng nó ở phạm vi toàn bộ hệ thống. Như vậy
an toàn hơn

Do Nam Khanh

unread,
Dec 26, 2009, 7:02:30 AM12/26/09
to phpvi...@googlegroups.com
Cảm ơn anh ĐỊnh đã trả lời :)

Sang tháng 1 này cty cũng dành khoảng 3 tuần để refactor lại toàn bộ dự án, chắc sẽ phải sử dụng 1 lớp DateFormatter ở các chỗ liên quan đến tính toán date time như anh nói ạ :)


2009/12/25 pcdinh <pcd...@gmail.com>
--

Bạn nhận được thư này vì bạn đã được đăng ký vào nhóm Google Groups "PHPVietnam".
Để đăng bài lên nhóm này, hãy gửi email đến phpvi...@googlegroups.com.
Để huỷ đăng ký khỏi nhóm này, hãy gửi email tới phpvietnam+...@googlegroups.com.
Để biết tuỳ chọn khác, hãy truy cập nhóm này tại http://groups.google.com/group/phpvietnam?hl=vi.


Reply all
Reply to author
Forward
0 new messages