Convertir une date (date time) en chaine conforme à la RFC822 (Mail, RSS, XML, ...)
# 0000000172
ajouté le 09/04/2005 15:15:49 et modifié le 29/04/2005
consulté 13215 fois
Niveau
initié
Version(s) Foxpro : VFP 7.0
Description
Si vous cherchez a manipuler des API pour les mails, rss, xml, vous avez a exprimer un DateTime en date au format conforme à la RFC 822 (http://www.ietf.org/rfc/rfc822.txt)
=TtoC822(Datetime(),2)
retourne "Sat, 09 Apr 2005 15:14:13 GMT + 0200"
et ce quelque soit les paramétrages SET DATE, SET CENTURY, SET STRICTDATE, ... de VFP
Cordialement
Francis FAURE
Extrait de la RFC 822 (chapitre 5)
5. DATE AND TIME SPECIFICATION
5.1. SYNTAX
date-time = [ day "," ] date time ; dd mm yy ; hh:mm:ss zzz
*----------------------------------------------------------------------------------------- * TtoC 822 * fonction TtoC822(date time, [Heure de décalage GMT]) * But passer un date time et retourner une chaine conforme au format de la RFC822 * quelque soit les paramétres de VFP (set date, set century, ...) * le deuxieme paramétre (optionnel) est la différence en l'heure donnée et l'heure GMT * utilisable pour les mails, rss, etc... * Par Francis FAURE * avril 2005 * francis.faure@dord.com * ressources : * RFC822 http://www.ietf.org/rfc/rfc822.txt Chapitre 5 *----------------------------------------------------------------------------------------- function TtoC822(p_date_time asDatetime, p_h_differentiel_gmt asInteger) asString local v_r asstring dimensiont_jours[7]asstring t_jours[1] = "Mon" t_jours[2] = "Tue" t_jours[3] = "Wed" t_jours[4] = "Thu" t_jours[5] = "Fri" t_jours[6] = "Sat" t_jours[7] = "Sun" dimensiont_mois[12]asstring t_mois[01] = "Jan" t_mois[02] = "Feb" t_mois[03] = "Mar" t_mois[04] = "Apr" t_mois[05] = "May" t_mois[06] = "Jun" t_mois[07] = "Jul" t_mois[08] = "Aug" t_mois[09] = "Sep" t_mois[10] = "Oct" t_mois[11] = "Nov" t_mois[12] = "Dec" ifnotType("p_date_time")$"DT"
p_date_time = Datetime() endif ifType("p_h_differentiel_gmt")<>"N"
p_h_differentiel_gmt = 0 endif
v_r = t_jours[DoW(p_date_time, 2)] + ", "&& [ day "," ]
v_r = v_r + Strtran(Str(Day(p_date_time),2), " ", "0") + " "&& dd
v_r = v_r + t_mois[Month(p_date_time)] + " "&& mm
v_r = v_r + Str(Year(p_date_time),4) + " "&& yyyy
v_r = v_r + Left(time(p_date_time),8) + " "&& HH:MM:SS if p_h_differentiel_gmt ==0 && si h décalage GMT précisé
v_r = v_r + "GMT"&& zone else if p_h_differentiel_gmt>=0 && +/-
v_r = v_r + "+" else
v_r = v_r + "-" endif
v_r = v_r + Strtran(Str(p_h_differentiel_gmt,2), " ", "0")+"00"&& HHMM endif return v_r *-----------------------------------------------------------------------------------------
Commentaires
le 11/04/2005, FredA a écrit : tu cherches xml datetime 822 dans MSDN, tu vas tomber sur un article foxtalk de 2004 expliquant un peu tout ça. A priori, ce type de format n'est réellement appliqué que pour le RSS, mais on a l'habitude de voir les normes dé/contournées ces jours ci.
le 11/04/2005, Francis Faure a écrit : Oui j'ai vu l'article sur Foxtalk : très bien d'ailleur ! (je t'ai même envoyé le lien en email il y a quelques jours). Oui ce format est utilisé pour XML / RSS, mais aussi pour les emails si l'on suit les RFC ;) j'en ai eu besoin pour la mise en place du Feed RSS sur www.atoutfox.org ;) Cordialement Francis FAURE
tu cherches xml datetime 822 dans MSDN, tu vas tomber sur un article foxtalk de 2004 expliquant un peu tout ça. A priori, ce type de format n'est réellement appliqué que pour le RSS, mais on a l'habitude de voir les normes dé/contournées ces jours ci.