ATOUTFOX
COMMUNAUTÉ FRANCOPHONE DES PROFESSIONNELS FOXPRO
Visual FoxPro : le développement durable

Convertir une date (date time) en chaine conforme à la RFC822 (Mail, RSS, XML, ...)   



L'auteur

Francis Faure
France France
Membre Actif (personne physique)
# 0000000001
enregistré le 11/10/2004

http://www.wanagain.net
56 ans
Faure Francis
de la société Design Or Decline
Fiche personnelle


Note des membres
pas de note

Contributions > 01 - PRG : Programmation > Temps - heures - Dates - Calendriers

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é 12739 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

day = "Mon" / "Tue" / "Wed" / "Thu"
/ "Fri" / "Sat" / "Sun"

date = 1*2DIGIT month 2DIGIT ; day month year
; e.g. 20 Jun 82

month = "Jan" / "Feb" / "Mar" / "Apr"
/ "May" / "Jun" / "Jul" / "Aug"
/ "Sep" / "Oct" / "Nov" / "Dec"

time = hour zone ; ANSI and Military

hour = 2DIGIT ":" 2DIGIT [":" 2DIGIT]
; 00:00:00 - 23:59:59

zone = "UT" / "GMT" ; Universal Time
; North American : UT
/ "EST" / "EDT" ; Eastern: - 5/ - 4
/ "CST" / "CDT" ; Central: - 6/ - 5
/ "MST" / "MDT" ; Mountain: - 7/ - 6
/ "PST" / "PDT" ; Pacific: - 8/ - 7
/ 1ALPHA ; Military: Z = UT;
; A:-1; (J not used)
; M:-12; N:+1; Y:+12
/ ( ("+" / "-") 4DIGIT ) ; Local differential
; hours+min. (HHMM)

Code source :
*-----------------------------------------------------------------------------------------
* 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 as Datetime, p_h_differentiel_gmt as Integeras String
  local v_r as string
  dimension t_jours[7] as string
  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"
  dimension t_mois[12] as string
  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"
  if not Type("p_date_time")$"DT"
    p_date_time = Datetime()
  endif
  if Type("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


Publicité

Les pubs en cours :

www.atoutfox.org - Site de la Communauté Francophone des Professionnels FoxPro - v3.4.0 - © 2004-2024.
Cette page est générée par un composant COM+ développé en Visual FoxPro 9.0-SP2-HF3