it-swarm.dev

Format daty mapy witryny Google

Potrzebuję formatu daty dla map witryn w php.

Jak mogę to zrobić ?

Czy to wyjście jest prawidłowe?

<lastmod>2012-08-02EEST18:01:18+03:00</lastmod>
17
user1329212

Jeśli masz znacznik czasu, możesz poprawnie sformatować datę w następujący sposób:

<lastmod><?php echo date('c', $timestamp); ?></lastmod>

Znacznik czasu może być time() (dla bieżącego czasu) lub inną metodą pobierania unix tiemstamp, np. strtotime()

33
Dunhamzzz

Aby sformatować bieżący znacznik czasu w kodowaniu W3C Datetime (tak jak w plikach sitemap.xml), użyj następujących parametrów.

echo date('Y-m-dTH:i:sP', time());

Począwszy od PHP5 można również użyć znaku w formacie c, aby wydrukować dokładnie ten sam ciąg.

echo date('c',time());

Oba wydrukowałyby następujące informacje:

2009-04-03T11:49:00+01:00

ŹR&OACUTE;DŁO

19
Erfan Safarpoor

Aby przekonwertować z formatu datetime MySQL na format wymagany dla lastmod w mapach witryn, wystarczy użyć kodu PHP poniżej.

$lastmod = '2012-11-28 10:53:17'; //MySQL datetime format

$datetime = new DateTime($lastmod);
$result = $datetime->format('Y-m-d\TH:i:sP');

echo $result; //2012-11-28T10:53:17+01:00
16
NXT

Według Google , jego wartość jest opcjonalnym polem, które, jeśli jest podane, musi być sformatowane jako

YYYY-MM-DDThh:mmTZD 

Domyślny eksport datetime SQL jest zależy od ustawienia języka dla twojego serwera i może zawierać spacje i charakteryzować TZD, takie jak:

2014-09-19 10:33:05 UTC

W3 określa że TZD można sformatować w dowolnej z trzech opcji

TZD = oznacznik strefy czasowej (Z lub + hh: mm lub -hh: mm)

Wszelkie spacje z domyślnego formatowania muszą zostać usunięte; znak „T” musi być wstawiony przed czasem, a TZD musi pasować do jednego z obsługiwanych typów.

Aby sformatować bieżący znacznik czasu, użyj następujących parametrów.

echo date('Y-m-dTH:i:sP', time());

Począwszy od PHP5 można również użyć znaku w formacie c, aby wydrukować dokładnie ten sam ciąg.

echo date('c',time());
10
xiatica

Otrzymujesz ten wynik, ponieważ użyłeś starego zalecanego ciągu znaczników czasu

Y-m-dTH:i:sP.

Jednak to czego potrzebujesz

Y-m-d\TH:i:sP

Ten pojedynczy cios w plecy sprawi różnicę. W pewnym momencie duże litery T stały się znakiem specjalnym w PHP oznaczającym kod czasowy, więc jeśli nie unikniesz T, otrzymasz dokładnie to, co twoja sprawozdawczość.

3
AdamJones

Masz wiele formatów do wyboru . Użycie parametru c w funkcji date() spowoduje uzyskanie zalecanego formatu.

2
John Conde

usuń Kopalnia „EES” jest następująca 2013-12-26T19: 00: 00-05: 00 i działa http://www.industry-automation-parts.com/1_e_0_sitemap.xml

1
user3152317

Wiem, że pytanie dotyczyło PHP, ale znalazłem tę stronę googlującą dla Node/JavaScript. Najbliższym odpowiednikiem jest funkcja Date.toISOString():

var d = new Date();
d.toISOString(); // "2017-04-19T07:23:16.040Z"
1
Alex K

W rzeczywistości istnieją 2 podejścia do tego.

Pierwsze podejście polega na ustawieniu prawidłowej daty dla mapy witryny XML, która zawiera znak „C”, który dał wartość: ( 2019-06-03T17: 30: 21-05: 00) . przetestuj tutaj

<lastmod>'.date('c', strtotime($row['date'])).'</lastmod>

Drugim podejściem jest ustawienie prawidłowej daty dla mapy witryny RSS, która zawiera znak „r”, który dał wartość: ( 2019-03-07T17: 55: 44 + 00: 00) .

<pubDate>'.date('r', strtotime($row['date'])).'</pubDate>

Mam nadzieję, że to ci pomoże. Dzięki

0
Jodyshop

z moment.js;

moment().format('YYY-MM-DDTHH:mm:ssZ')
0
Ahmet Şimşek