Hướng dẫn dùng rfc-3339 trong PHP

Ngày nhập của tôi là 2014-03-10 05:40:00. Làm thế nào tôi có thể chuyển đổi nó sang định dạng RFC như thế 2014-3-10T05:40:00.000-00:00nào?

  • php

12 hữu ích 0 bình luận 23k xem chia sẻ

answer

23

Hướng dẫn dùng rfc-3339 trong PHP

RFC3339 là một trong những hằng số định dạng được xác định trước của DateTimelớp.

$inputDate = "2014-03-10 05:40:00";

$datetime = \DateTime::createFromFormat("Y-m-d H:i:s", $inputDate);

echo $datetime->format(\DateTime::RFC3339);

23 hữu ích 0 bình luận chia sẻ

answer

23

ở đây một tùy chọn khác được thêm vào trong php5 như thế này

$datetime= date("c", strtotime("2014-03-10 05:40:00"));
echo $datetime;  //Output : 2014-03-10T05:40:00+00:00 

23 hữu ích 0 bình luận chia sẻ

answer

13

Tôi muốn thêm rằng các hằng số được xác định trước cho điều này cũng có thể được sử dụng với date(). Cả hai:

date(DATE_RFC3339);

date(DATE_ATOM);

trả về chuỗi ngày giờ được định dạng RFC3339 và tương đương với:

date('Y-m-d\TH:i:sP');

13 hữu ích 0 bình luận chia sẻ

Đăng nhập để trả lời câu hỏi

Có thể bạn quan tâm

answer

32

Tôi không biết chính xác những gì có trong $row['Time']đó nhưng nó phải như sau:

Định nghĩa

Ngày-giờ hợp lệ như được định nghĩa trong RFC 3339 với các tiêu chuẩn bổ sung sau:

  • các ký tự chữ T và Z trong cú pháp ngày / giờ phải luôn là chữ hoa
  • thay vào đó, sản xuất theo năm tháng được định nghĩa là bốn hoặc nhiều chữ số đại diện cho một số lớn hơn 0

Các ví dụ

  • 1990-12-31T23: 59: 60Z
  • 1996-12-19T16: 39: 57-08: 00

Giải pháp

Để tạo định dạng RFC 3339 trong PHP, bạn có thể sử dụng:

echo date('Y-m-d\TH:i:sP', $row['Time']);

hoặc theo cách khác:

echo date("c", strtotime($row['Time']));  

hoặc nếu bạn thích phong cách khách quan:

echo (new DateTime($row['Time']))->format('c');

Trong mã của bạn

Vì vậy, trong mã của bạn, nó sẽ trông như sau:


hoặc là

" class="date" name="start" REQUIRED>

Thủ công

  • Thông tin thêm có thể được tìm thấy ở đây

  • Hướng dẫn sử dụng ngày trong PHP

  • Hướng dẫn sử dụng DateTime trong PHP

32 hữu ích 5 bình luận chia sẻ

answer

16

Khi gửi

bằng cách sử dụng

định dạng giá trị bạn sẽ nhận được trông như thế này.

2019-09-06T00: 21

Để đặt giá trị mới trong hộp loại đầu vào của bạn.

Bạn phải dùng:

date('Y-m-d\TH:i', strtotime($exampleDate)) //2019-08-18T00:00

Ví dụ giải pháp :

$exampleDate = "2019-08-18 00:00:00";//sql timestamp
$exampleDate = strtotime($exampleDate);
$newDate = date('Y-m-d\TH:i', $exampleDate);

hoặc là

$exampleDate = "2019-08-18 00:00:00";//sql timestamp
$newDate = date('Y-m-d\TH:i', strtotime($exampleDate));

Nếu bạn không sử dụng, strtotime()bạn sẽ gặp lỗi

Lưu ý: Gặp phải một giá trị số không được định dạng tốt


Đã kiểm tra :

 - $exampleDate = 2019-08-18 00:00:00 ;
 - //Not Working - output(1970-01-01T01:33:39)
 - 
 - //Not Working - output(1970-01-01T01:33:39+01:00)
 - 
 - //Not Working - output(2019-08-18T00:00:00+02:00)
 - 
 - //Not Working - output(2019-09-23T19:36:01+02:00)
 - format('c');?>
 - //Working Perfect - output(2019-08-18T00:00:00)
 -  

16 hữu ích 1 bình luận chia sẻ

answer

9

nó đơn giản là vậy và làm việc cho tôi trước tiên hãy chuyển đổi giá trị php của bạn sang định dạng này

 time_in);   ?>

thì trong giá trị của phần tử đầu vào html, hãy sử dụng định dạng này

 

điều này sẽ đặt giá trị của bạn thành phần tử đầu vào

9 hữu ích 0 bình luận chia sẻ

answer

6

Câu trả lời của Karol Gasienica là một lời giải thích tuyệt vời nhưng bằng cách nào đó không hiệu quả với tôi ngay cả trong câu trả lời của họ

date('Y-m-d\TH:i:s', $row['Time']); //Gives me 1970-01-01 00:00
date('Y-m-d\TH:i:sP', $row['Time']); //Gives me no display
date("c", strtotime($row['Time'])); //No display too

Điều làm việc cho tôi là cái này

$t = $row['Time'];
date('Y-m-d\TH:i:s', strtotime($t)); // This got it perfectly

Tuy nhiên tôi vẫn bỏ phiếu vì lý do giải thích.

6 hữu ích 0 bình luận chia sẻ

answer

4

Bạn có thể dùng

date('Y-m-d\TH:i'); //Example result: '2017-01-01T01:01'

nếu sử dụng \ T thay vì T (không hoạt động)

date('Y-m-dTH:i'); //Example result: '2017-01-01UTC01:01'

4 hữu ích 0 bình luận chia sẻ

answer

1

Không có giải pháp nào ở trên phù hợp với tôi kể từ năm 2019 khi sử dụng Google Chrome Version 78.0.3904.70 (Official Build) (64-bit)

Những gì làm việc cho tôi là.


Như bạn có thể thấy, định dạng là 2017-06-13T13:00hoặc Y-m-dTH:i.

Đối với PHP, bạn có thể làm như thế nào.


Hy vọng điều này sẽ tiết kiệm thời gian của ai đó. :)

1 hữu ích 1 bình luận chia sẻ

answer

1

Cách đơn giản làm việc cho tôi là


1 hữu ích 1 bình luận chia sẻ

answer

0

$tripid=$_REQUEST['tripid'];
$sql="SELECT * FROM tripdetails WHERE trip_id='".$tripid."'";
$trpresult=mysqli_query($connect,$sql);
  if(mysqli_num_rows($trpresult)==1)
    {
      $trpdetails=mysqli_fetch_assoc($trpresult);
    }
 $trpstartdate = substr_replace($trpdetails['trip_start_date'],T,11,0);

 $string = preg_replace('/\s+/', '', $trpstartdate);

Đây là phần Html


0 hữu ích 0 bình luận chia sẻ

answer

0

Điều này sẽ chuyển đổi datetime từ cơ sở dữ liệu thành datetime-local

str_replace(" ","T",substr_replace($string ,"", -3))

0 hữu ích 0 bình luận chia sẻ

answer

0

Sử dụng tính năng múi giờ tốt hơn

function getCurrentDateTime(){
    $date = new DateTime();
    $date->setTimezone(new DateTimeZone('GMT+6')); //Time Zone GMT +6
    $dt= $date->format('Y-m-d\TH:i:s');
    return $dt;
}

0 hữu ích 0 bình luận chia sẻ

answer

0

Thử nó:

" class="date" name="start" REQUIRED>

0 hữu ích 0 bình luận chia sẻ

answer

-1

Hãy thử điều đó. Tôi hiểu điều đó trong Bootstrap 4. (Google Dịch: prueba con eso, a mi me sale con eso en Bootstrap 4.)


-1 hữu ích 3 bình luận chia sẻ