Hướng dẫn how can i change current date in php? - làm thế nào tôi có thể thay đổi ngày hiện tại trong php?

Có thể thay đổi ngày và giờ hiện tại của PHP [một cái gì đó như set_time [strtotime ['1999-09-09']] Vì vậy, khi tôi gọi thời gian [] nó sẽ trả lại cho tôi dấu thời gian cho năm 1999-09-09? Tôi cần đặt nó Trên toàn cầu cho toàn bộ ứng dụng.

CHỈNH SỬA

Tôi đã có một ứng dụng cũ và tôi cần phải có thể thiết lập ngày hiện tại. Tôi không thể chấp nhận bất kỳ chức năng tùy chỉnh nào. Hãy tưởng tượng tôi nên xem lại tất cả các mã và thay thế cuộc gọi mỗi lần []. Ngay cả khi tôi sẽ làm như vậy thì nó sẽ không giúp được vì có các chức năng như getdate [] mà tôi cũng cần thay thế.

Hỏi ngày 13 tháng 10 năm 2010 lúc 12:56Oct 13, 2010 at 12:56

voodvoodvooD

2.7912 huy hiệu vàng24 Huy hiệu bạc33 Huy hiệu đồng2 gold badges24 silver badges33 bronze badges

1

Bạn cũng có thể kiểm tra mô -đun PHP Timecop, hoạt động hoàn hảo trong trường hợp của tôi.

Sau khi cài đặt nó, bạn có thể đi lại đúng thời gian chỉ với một dòng mã.

Đã trả lời ngày 20 tháng 2 năm 2015 lúc 17:06Feb 20, 2015 at 17:06

ZMFZMFzmf

4976 Huy hiệu bạc8 Huy hiệu Đồng6 silver badges8 bronze badges

1

Các chức năng time[] thực sự yêu cầu đồng hồ hệ thống vào thời điểm đó, vì vậy bạn phải cập nhật thời gian đồng hồ hệ thống của máy chủ. Một vài điều cần ghi nhớ:

  • Điều này được thực hiện khác nhau trên máy chủ Unix so với máy chủ Windows. Nếu bạn muốn mã tương thích với cả hai, bạn phải cẩn thận
  • Đôi khi [đặc biệt là trong các tình huống lưu trữ được chia sẻ], bạn không được phép thay đổi thời gian hệ thống
  • Thay đổi về thời gian hệ thống sẽ vẫn còn sau khi tập lệnh đã được thực thi trừ khi bạn thay đổi lại sau. Do đó, bạn có nguy cơ thực sự làm hỏng đồng hồ hệ thống.

Nếu bạn muốn thay đổi thời gian trên toàn cầu cho toàn bộ ứng dụng, tôi khuyên bạn nên có một biến tĩnh $timeOffset và tạo chức năng time[] của riêng bạn như sau:

function myTime[]{
    global $timeOffset;
    return time[]+$timeOffset;
}

Tuy nhiên, nếu bạn đã tính đến tất cả những điều đó và vẫn muốn thay đổi thời gian hệ thống, bạn sẽ cần gửi lệnh đến vỏ bằng cách sử dụng shell_exec[]

Trong Windows, mã sẽ như thế này:

shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively

Trong Unix, theo trang người đàn ông date, mã sẽ giống như:

shell_exec["date 0909hhmm1999"]; // It says "date MMDDhhmiYYYY". I'm not sure how to set seconds, although I assume "mi" = "minutes"

Đã trả lời ngày 13 tháng 10 năm 2010 lúc 13:06Oct 13, 2010 at 13:06

Stevendesustevendesustevendesu

15K21 Huy hiệu vàng98 Huy hiệu bạc176 Huy hiệu đồng21 gold badges98 silver badges176 bronze badges

2

PHP không có ngày và thời gian riêng. Time [] trả về dấu thời gian hiện tại của thời gian của máy chủ. Tùy thuộc vào hệ điều hành của bạn, có thể bạn [tức là người dùng chạy quy trình tập lệnh của bạn] thực sự không được phép thay đổi ngày và giờ của máy chủ.

Điều nào hỏi một câu hỏi khác: Tại sao bạn muốn làm điều này?

Tốt hơn là thực hiện hàm thời gian của riêng bạn [] của bạn:

class myTime
{

    private static $offset = 0;

    public static function getTime[]
    {
        return time[] + self::$offset;
    }

    public static function setTime[$time]
    {
        self::$offset = $time - time[];
    }
}

Và sau đó, ở mọi nơi bạn sử dụng time[], sử dụng

shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
1. Để đặt thời gian, hãy sử dụng
shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
2 trong đó
shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
3 là dấu thời gian bạn muốn sử dụng.

Đã trả lời ngày 13 tháng 10 năm 2010 lúc 13:12Oct 13, 2010 at 13:12

PellepellePelle

6.3504 Huy hiệu vàng32 Huy hiệu bạc 50 Huy hiệu Đồng4 gold badges32 silver badges50 bronze badges

Không, không phải. PHP có được thời gian từ thời gian hệ thống. Cách duy nhất bạn có thể thay đổi những gì PHP coi là thời gian là thay đổi thời gian hệ thống.

Bạn có thể làm điều đó bằng cách sử dụng

shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
4 hoặc một cái gì đó tương tự, nhưng có lẽ không nên.

Một giải pháp tốt hơn có thể là tạo chức năng thời gian của riêng bạn, mà bạn có thể chỉ định, sử dụng bù.

eg:

function mytime[] {
    return time[]+set_mytime[];
}

function set_mytime[$new_time=null] {
    static $offset;
    if[!$new_time] {return $offset;}
    //$new_time should be a unix timestamp as generated by time[], mktime[] or strtotime[], etc
    $real_time=time[];
    $offset=$real_time-$new_time;
}

//usage:
set_mytime[strtotime["1999-09-09"];
$faketime=mytime[];
.... do something that takes a bit of time ....
$faketime2=mytime[];

Đó chỉ là một cái gì đó tôi đã ném cùng nhau nhanh chóng cho bạn. Tôi đã không kiểm tra nó, vì vậy có thể có [có thể] các lỗi, nhưng tôi hy vọng nó cung cấp cho bạn đủ để có được giải pháp.

Đã trả lời ngày 13 tháng 10 năm 2010 lúc 13:07Oct 13, 2010 at 13:07

SpudleypudleySpudley

163K39 Huy hiệu vàng229 Huy hiệu bạc 305 Huy hiệu Đồng39 gold badges229 silver badges305 bronze badges

Nếu bạn đang chạy tập lệnh PHP của mình từ dòng lệnh trên Linux, tiện ích

shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
5 có thể được sử dụng để thay đổi thời gian hệ thống được thấy bởi PHP [hoặc bất kỳ chương trình nào]. Nó cũng cho phép bạn thay đổi tỷ lệ tại thời điểm mà tiến bộ.

Lưu ý rằng thời gian thu được từ các dịch vụ bên ngoài, chẳng hạn như các truy vấn cơ sở dữ liệu thông qua [tức là

shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
6] sẽ tiếp tục hiển thị thời gian hệ thống, trừ khi chúng cũng đã được ra mắt với
shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
5.

Cảm ơn @ZMF cho liên kết đến HNW/PHP-timecop [không còn duy trì], điều này dẫn tôi đến Active Fork Kiddivouchers/PHP-timecop, trong đó

shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
5 đã được đề cập trong cam kết mới nhất.

Đã trả lời ngày 28 tháng 10 lúc 16:56Oct 28 at 16:56

Roger Dueckroger DueckRoger Dueck

5756 Huy hiệu bạc16 Huy hiệu Đồng6 silver badges16 bronze badges

Bạn cũng có thể cố gắng sử dụng biến toàn cầu

shell_exec["date 09-09-99"]; // Use "date mm-dd-yy" or "time hh:mm:ss", respectively
9 [có sẵn kể từ Php 5.1.0] và thay thế nó vào thời gian chạy.

Đã trả lời ngày 10 tháng 4 năm 2014 lúc 21:29Apr 10, 2014 at 21:29

Kenorbkenorbkenorb

Phù bằng vàng 146K7676 gold badges658 silver badges714 bronze badges

Bài Viết Liên Quan

Chủ Đề