2009-11-02 40 views
13

Tôi đang làm việc trên di chuyển blog từ blog được tạo tùy chỉnh thành Wordpress. Một trong những lĩnh vực mà Wordpress đang tìm kiếm trong cơ sở dữ liệu là dấu ngày/giờ được đặt thành GMT, trước thời gian của chúng tôi là 4 giờ. Vì vậy, về cơ bản tôi cần phải lấy dấu ngày/giờ của chúng tôi (theo định dạng HHYY-MM-DD HH: MM: SS) và thêm bốn giờ vào đó. Tôi đã nhìn vào lệnh MySQL "ADDTIME", nhưng tôi nghĩ rằng chỉ hoạt động trên các lựa chọn, không phải trên chèn.Cách thêm 4 giờ vào thời gian trong PHP/MySQL

Tôi đã thực hiện một tập lệnh đã phát hiện ngày tháng thành từng phần và thêm 4 giờ vào thời gian đó, nhưng logic tiếp theo sẽ được yêu cầu kiểm tra khi 4 giờ đẩy vào ngày/tháng/năm tiếp theo có vẻ hơi quá mức.

+1

Không có gì khiến quý vị không làm việc đó trong cơ sở dữ liệu là.Bạn có thể di chuyển dữ liệu từ cơ sở dữ liệu hiện tại mà không thay đổi dấu thời gian rồi thực hiện UPDATE blog_table SET blog_timestamp = DATE_ADD (blog_timestamp, INTERVAL 4 GIỜ); - điều đó sẽ thực hiện những gì bạn muốn. – artlung

Trả lời

31
date($format, strtotime("$date + 4 hours")); 
6

gì về:

date("Y-m-d H:i:s", strtotime("2009-08-09 23:44:22")+4*60*60) 

hoặc thậm chí

date("Y-m-d H:i:s", strtotime("2009-08-09 23:44:22 + 4 hours")) 

Có thể cần một chút kiểm tra lỗi, nhưng nên giải quyết vấn đề của bạn.

14

Không có gì có thể ngăn chặn ADDTIME() từ được sử dụng trong một INSERT HOẶC UPDATE là, nhưng DATE_ADD() có lẽ là những gì sẽ làm việc tốt nhất:

INSERT INTO table_name 
SET my_datetime = DATE_ADD('2009-11-01 19:30:00', INTERVAL 4 HOURS), 
...other insert columns here... ; 
+7

'CẬP NHẬT bảng SET trường = DATE_ADD (trường, INTERVAL 4 GIỜ);' là một chút chung chung hơn :) – jensgram

+0

Tôi coi SerpicoLugNut đã trích xuất dấu thời gian để đó là cú pháp tôi đã sử dụng. Mỗi dấu thời gian được trích xuất sẽ kết thúc tìm kiếm theo cách đó trên INSERT. Hài hước, tôi đã thêm định dạng chung làm nhận xét ở trên bên phải khi bạn rời khỏi trang của mình. :-) – artlung

+2

Thats 'INTERVAL 4 HOUR' và không' INTERVAL 4 HOURS' trên MySQL 5.5.44 –

3

Hoặc tốt hơn trong SQL

DATE(DATE_ADD(`Table`.`Column`, INTERVAL 4 HOURS)) 
1

Dường như TZ của cơ sở dữ liệu của bạn được thiết lập để GMT (UTC), mà là như nó phải được. Bạn cần chuyển đổi ngày địa phương thành GMT khi thêm vào cơ sở dữ liệu.

từ MySQL Manual 5.1 Tham khảo:

CONVERT_TZ(dt,from_tz,to_tz) 

CONVERT_TZ() chuyển đổi một dt giá trị datetime từ múi giờ do from_tz múi giờ do to_tz và trả về giá trị kết quả. Múi giờ có thể được chỉ định như được mô tả trong Phần 5.10.8, “Hỗ trợ múi giờ của máy chủ MySQL”. Hàm này trả về NULL nếu các đối số không hợp lệ.

Nếu giá trị nằm ngoài phạm vi được hỗ trợ của loại TIMESTAMP khi chuyển đổi fom from_tz thành UTC, không xảy ra chuyển đổi. Phạm vi TIMESTAMP được mô tả trong Phần 11.1.2, “Tổng quan về các loại ngày và giờ”.

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','GMT','MET'); 
     -> '2004-01-01 13:00:00' 

mysql> SELECT CONVERT_TZ('2004-01-01 12:00:00','+00:00','+10:00'); 
     -> '2004-01-01 22:00:00' 
+0

lưu ý: đối với các múi giờ biểu tượng để làm việc (GMT, PST), bạn phải thiết lập các bảng liên quan đến múi giờ trong mysql cơ sở dữ liệu (zoneinfo). – dar7yl

2

Đối với tất cả các câu trả lời bằng DATE_ADD, cú pháp chính xác là "4 GIỜ" không "4 GIỜ" (ít nhất là trong phiên bản hiện tại của MySQL):

UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOUR);

0

Tôi đã sử dụng phương pháp này:

$format = Y-m-d; //you can use any format if you want 
$date = $row['date']; // from mysql_fetch_array 
$date2 = date($format, strtotime("$date + 4 week")); 
echo $date; 
0

Nếu bạn sử dụng (ngày/tháng/năm) [định dạng ngày Brazil] như dưới đây, nó không hoạt động:

$ todays_date = date ("d/m/Y H: i: s");

echo "Ngày/giờ của máy chủ".$ todays_date;

echo "ngày Server/giờ + 2 giờ" .date ("d/m/Y H: i: s", strtotime ("$ todays_date + 2 giờ"));

Kết quả:

máy chủ ngày/giờ                   10/04/2012 07:44:36

ngày máy chủ/hou r + 2 giờ     04/10/2012 09:44:36


Bạn cần phải bạn (tháng/ngày/năm) và nó hoạt động hoàn hảo:

$ todays_date = date ("m/d/YH: i: s"); echo "Ngày/giờ của máy chủ".

$ todays_date. "
"; echo "" Ngày Server/giờ + 2 giờ ".date (" m/d/YH: i: s", strtotime ("$ todays_date + 2 giờ"));

Kết quả:

máy chủ ngày/giờ                     04/10/2012 07:44:36

ngày Server/giờ + 2 giờ     04/10/2012 09:44:36

0

Working 100%

<?php 

$datee= date("Y-m-d", strtotime("$last_update+ 10 hours")); 
$timee= date("H:i:s", strtotime("$last_update+ 10 hours")); 
?> 

Last update was on: <?php echo $datee; ?> at <?php echo $timee; ?> 

$ last_update là một dấu thời gian nội dung giá trị từ mysql

Kết quả sẽ giống như thế này "Cập nhật lần cuối vào: 2015-02-05 tại 05:01:43"

0
<?php 

function data_time($DT, $pm, $val, $time_type){ 
    $time = date("H:i:s"); 
    $date = date("d.m.Y"); 

    if($DT=='d'){ 
     switch($pm){ 
      case '+': $newData = date("d.m.Y ", strtotime("$date + $val $time_type")); 
      break; 
      case '-': $newData = date("d.m.Y ", strtotime("$date - $val $time_type")); 
      break; 
     } 
     return $newData; 
    } 
    if($DT=='t'){ 
     switch($pm){ 
      case '+': $newTime = date("H:i:s ", strtotime("$time + $val $time_type")); 
      break; 
      case '-': $newTime = date("H:i:s ", strtotime("$time - $val $time_type")); 
      break; 
     } 
     return $newTime; 
    } 
} 

$newData = data_time('t','+',5,'year') 
//or 

$DataTime = 'd'; // 't' or 'd' 
$PlusMinus ='+'; // '+' or '-' 
$val = 1;  // 0-9 
$DMT ='month'; // 'day', 'month' or 'year' 

$newData = data_time($DataTime, $PlusMinus, $val, $DMT); 
echo $newData; 

?> 
+0

downvoting: điều này bị định dạng sai, phức tạp hơn nhiều so với các câu trả lời khác mà không có bất kỳ lời giải thích nào. – CaringDev

+0

bạn thấy khó khăn không? nhập 4 giá trị? $ newData = data_time (t, '+', 5, ngày); – Viktor

+0

bạn có thể thay đổi trường hợp thành biến hoặc giá trị boolean. Giải pháp này bao gồm rất nhiều tính năng, "giây, phút, giờ, ngày, tháng, năm" Vui lòng hiển thị giải pháp của bạn, điều này hữu ích cho tôi. Và xin lỗi cho các anh chàng tiếng anh của tôi, tôi đang học. Tôi chỉ cho thấy những gì tôi đã viết trong khi học tập tại nhà, và không sao chép và dán. Có thể nó giúp đỡ một ai đó. – Viktor

0
UPDATE table SET field = DATE_ADD(field, INTERVAL 4 HOURS); 

Do đó nó rất hữu ích trong php để thêm fucntion để cột

Các vấn đề liên quan