Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 71795
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T19:56:38+00:00 2026-05-10T19:56:38+00:00

How do I convert a DateTime structure to its equivalent RFC 822 date-time formatted

  • 0

How do I convert a DateTime structure to its equivalent RFC 822 date-time formatted string representation and parse this string representation back to a DateTime structure in .NET? The RFC-822 date-time format is used in a number of specifications such as the RSS Syndication Format.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T19:56:38+00:00Added an answer on May 10, 2026 at 7:56 pm

    This is an implementation in C# of how to parse and convert a DateTime to and from its RFC-822 representation. The only restriction it has is that the DateTime is in Coordinated Universal Time (UTC). I agree that this is not very elegant code, but it does the job.

    /// <summary> /// Provides methods for converting <see cref='DateTime'/> structures  /// to and from the equivalent <a href='http://www.w3.org/Protocols/rfc822/#z28'>RFC 822</a>  /// string representation. /// </summary> public class Rfc822DateTime {     //============================================================     //  Private members     //============================================================     #region Private Members     /// <summary>     /// Private member to hold array of formats that RFC 822 date-time representations conform to.     /// </summary>     private static string[] formats = new string[0];     /// <summary>     /// Private member to hold the DateTime format string for representing a DateTime in the RFC 822 format.     /// </summary>     private const string format     = 'ddd, dd MMM yyyy HH:mm:ss K';     #endregion      //============================================================     //  Public Properties     //============================================================     #region Rfc822DateTimeFormat     /// <summary>     /// Gets the custom format specifier that may be used to represent a <see cref='DateTime'/> in the RFC 822 format.     /// </summary>     /// <value>A <i>DateTime format string</i> that may be used to represent a <see cref='DateTime'/> in the RFC 822 format.</value>     /// <remarks>     /// <para>     /// This method returns a string representation of a <see cref='DateTime'/> that utilizes the time zone      /// offset (local differential) to represent the offset from Greenwich mean time in hours and minutes.      /// The <see cref='Rfc822DateTimeFormat'/> is a valid date-time format string for use      /// in the <see cref='DateTime.ToString(String, IFormatProvider)'/> method.     /// </para>     /// <para>     /// The <a href='http://www.w3.org/Protocols/rfc822/#z28'>RFC 822</a> Date and Time specification      /// specifies that the year will be represented as a two-digit value, but the      /// <a href='http://www.rssboard.org/rss-profile#data-types-datetime'>RSS Profile</a> recommends that      /// all date-time values should use a four-digit year. The <see cref='Rfc822DateTime'/> class      /// follows the RSS Profile recommendation when converting a <see cref='DateTime'/> to the equivalent      /// RFC 822 string representation.     /// </para>     /// </remarks>     public static string Rfc822DateTimeFormat     {         get         {             return format;         }     }     #endregion      #region Rfc822DateTimePatterns     /// <summary>     /// Gets an array of the expected formats for RFC 822 date-time string representations.     /// </summary>     /// <value>     /// An array of the expected formats for RFC 822 date-time string representations      /// that may used in the <see cref='DateTime.TryParseExact(String, string[], IFormatProvider, DateTimeStyles, out DateTime)'/> method.     /// </value>     /// <remarks>     /// The array of the expected formats that is returned assumes that the RFC 822 time zone      /// is represented as or converted to a local differential representation.     /// </remarks>     /// <seealso cref='ConvertZoneToLocalDifferential(String)'/>     public static string[] Rfc822DateTimePatterns     {         get         {             if (formats.Length > 0)             {                 return formats;             }             else             {                 formats = new string[35];                  // two-digit day, four-digit year patterns                 formats[0]  = 'ddd',' dd MMM yyyy HH':'mm':'ss'.'fffffff zzzz';                 formats[1]  = 'ddd',' dd MMM yyyy HH':'mm':'ss'.'ffffff zzzz';                 formats[2]  = 'ddd',' dd MMM yyyy HH':'mm':'ss'.'fffff zzzz';                 formats[3]  = 'ddd',' dd MMM yyyy HH':'mm':'ss'.'ffff zzzz';                 formats[4]  = 'ddd',' dd MMM yyyy HH':'mm':'ss'.'fff zzzz';                 formats[5]  = 'ddd',' dd MMM yyyy HH':'mm':'ss'.'ff zzzz';                 formats[6]  = 'ddd',' dd MMM yyyy HH':'mm':'ss'.'f zzzz';                 formats[7]  = 'ddd',' dd MMM yyyy HH':'mm':'ss zzzz';                  // two-digit day, two-digit year patterns                 formats[8]  = 'ddd',' dd MMM yy HH':'mm':'ss'.'fffffff zzzz';                 formats[9]  = 'ddd',' dd MMM yy HH':'mm':'ss'.'ffffff zzzz';                 formats[10] = 'ddd',' dd MMM yy HH':'mm':'ss'.'fffff zzzz';                 formats[11] = 'ddd',' dd MMM yy HH':'mm':'ss'.'ffff zzzz';                 formats[12] = 'ddd',' dd MMM yy HH':'mm':'ss'.'fff zzzz';                 formats[13] = 'ddd',' dd MMM yy HH':'mm':'ss'.'ff zzzz';                 formats[14] = 'ddd',' dd MMM yy HH':'mm':'ss'.'f zzzz';                 formats[15] = 'ddd',' dd MMM yy HH':'mm':'ss zzzz';                  // one-digit day, four-digit year patterns                 formats[16] = 'ddd',' d MMM yyyy HH':'mm':'ss'.'fffffff zzzz';                 formats[17] = 'ddd',' d MMM yyyy HH':'mm':'ss'.'ffffff zzzz';                 formats[18] = 'ddd',' d MMM yyyy HH':'mm':'ss'.'fffff zzzz';                 formats[19] = 'ddd',' d MMM yyyy HH':'mm':'ss'.'ffff zzzz';                 formats[20] = 'ddd',' d MMM yyyy HH':'mm':'ss'.'fff zzzz';                 formats[21] = 'ddd',' d MMM yyyy HH':'mm':'ss'.'ff zzzz';                 formats[22] = 'ddd',' d MMM yyyy HH':'mm':'ss'.'f zzzz';                 formats[23] = 'ddd',' d MMM yyyy HH':'mm':'ss zzzz';                  // two-digit day, two-digit year patterns                 formats[24] = 'ddd',' d MMM yy HH':'mm':'ss'.'fffffff zzzz';                 formats[25] = 'ddd',' d MMM yy HH':'mm':'ss'.'ffffff zzzz';                 formats[26] = 'ddd',' d MMM yy HH':'mm':'ss'.'fffff zzzz';                 formats[27] = 'ddd',' d MMM yy HH':'mm':'ss'.'ffff zzzz';                 formats[28] = 'ddd',' d MMM yy HH':'mm':'ss'.'fff zzzz';                 formats[29] = 'ddd',' d MMM yy HH':'mm':'ss'.'ff zzzz';                 formats[30] = 'ddd',' d MMM yy HH':'mm':'ss'.'f zzzz';                 formats[31] = 'ddd',' d MMM yy HH':'mm':'ss zzzz';                  // Fall back patterns                 formats[32] = 'yyyy'-'MM'-'dd'T'HH':'mm':'ss'.'fffffffK'; // RoundtripDateTimePattern                 formats[33] = DateTimeFormatInfo.InvariantInfo.UniversalSortableDateTimePattern;                 formats[34] = DateTimeFormatInfo.InvariantInfo.SortableDateTimePattern;                  return formats;             }         }     }     #endregion      //============================================================     //  Public Methods     //============================================================     #region Parse(string s)     /// <summary>     /// Converts the specified string representation of a date and time to its <see cref='DateTime'/> equivalent.     /// </summary>     /// <param name='s'>A string containing a date and time to convert.</param>     /// <returns>     /// A <see cref='DateTime'/> equivalent to the date and time contained in <paramref name='s'/>,      /// expressed as <i>Coordinated Universal Time (UTC)</i>.     /// </returns>     /// <remarks>     /// The string <paramref name='s'/> is parsed using formatting information in the <see cref='DateTimeFormatInfo.InvariantInfo'/> object.     /// </remarks>     /// <exception cref='ArgumentNullException'><paramref name='s'/> is a <b>null</b> reference (Nothing in Visual Basic).</exception>     /// <exception cref='ArgumentNullException'><paramref name='s'/> is an empty string.</exception>     /// <exception cref='FormatException'><paramref name='s'/> does not contain a valid RFC 822 string representation of a date and time.</exception>     public static DateTime Parse(string s)     {         //------------------------------------------------------------         //  Validate parameter         //------------------------------------------------------------         if (String.IsNullOrEmpty(s))         {           throw new ArgumentNullException('s');         }          DateTime result;         if (Rfc822DateTime.TryParse(s, out result))         {             return result;         }         else         {             throw new FormatException(String.Format(null, '{0} is not a valid RFC 822 string representation of a date and time.', s));         }     }     #endregion      #region ConvertZoneToLocalDifferential(string s)     /// <summary>     /// Converts the time zone component of an RFC 822 date and time string representation to its local differential (time zone offset).     /// </summary>     /// <param name='s'>A string containing an RFC 822 date and time to convert.</param>     /// <returns>A date and time string that uses local differential to describe the time zone equivalent to the date and time contained in <paramref name='s'/>.</returns>     /// <exception cref='ArgumentNullException'><paramref name='s'/> is a <b>null</b> reference (Nothing in Visual Basic).</exception>     /// <exception cref='ArgumentNullException'><paramref name='s'/> is an empty string.</exception>     public static string ConvertZoneToLocalDifferential(string s)     {         string zoneRepresentedAsLocalDifferential   = String.Empty;          //------------------------------------------------------------         //  Validate parameter         //------------------------------------------------------------         if (String.IsNullOrEmpty(s))         {           throw new ArgumentNullException('s');         }          if(s.EndsWith(' UT', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' UT') + 1) ), '+00:00');         }         else if (s.EndsWith(' GMT', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' GMT') + 1 ) ), '+00:00');         }         else if (s.EndsWith(' EST', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' EST') + 1)), '-05:00');         }         else if (s.EndsWith(' EDT', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' EDT') + 1)), '-04:00');         }         else if (s.EndsWith(' CST', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' CST') + 1)), '-06:00');         }         else if (s.EndsWith(' CDT', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' CDT') + 1)), '-05:00');         }         else if (s.EndsWith(' MST', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' MST') + 1)), '-07:00');         }         else if (s.EndsWith(' MDT', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' MDT') + 1)), '-06:00');         }         else if (s.EndsWith(' PST', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' PST') + 1)), '-08:00');         }         else if (s.EndsWith(' PDT', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' PDT') + 1)), '-07:00');         }         else if (s.EndsWith(' Z', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' Z') + 1)), '+00:00');         }         else if (s.EndsWith(' A', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' A') + 1)), '-01:00');         }         else if (s.EndsWith(' M', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' M') + 1)), '-12:00');         }         else if (s.EndsWith(' N', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' N') + 1)), '+01:00');         }         else if (s.EndsWith(' Y', StringComparison.OrdinalIgnoreCase))         {             zoneRepresentedAsLocalDifferential  = String.Concat(s.Substring(0, (s.LastIndexOf(' Y') + 1)), '+12:00');         }         else         {             zoneRepresentedAsLocalDifferential  = s;         }          return zoneRepresentedAsLocalDifferential;     }     #endregion      #region ToString(DateTime utcDateTime)     /// <summary>     /// Converts the value of the specified <see cref='DateTime'/> object to its equivalent string representation.     /// </summary>     /// <param name='utcDateTime'>The Coordinated Universal Time (UTC) <see cref='DateTime'/> to convert.</param>     /// <returns>A RFC 822 string representation of the value of the <paramref name='utcDateTime'/>.</returns>     /// <exception cref='ArgumentException'>The specified <paramref name='utcDateTime'/> object does not represent a <see cref='DateTimeKind.Utc'>Coordinated Universal Time (UTC)</see> value.</exception>     public static string ToString(DateTime utcDateTime)     {         if (utcDateTime.Kind != DateTimeKind.Utc)         {             throw new ArgumentException('utcDateTime');         }          return utcDateTime.ToString(Rfc822DateTime.Rfc822DateTimeFormat, DateTimeFormatInfo.InvariantInfo);     }     #endregion      #region TryParse(string s, out DateTime result)     /// <summary>     /// Converts the specified string representation of a date and time to its <see cref='DateTime'/> equivalent.     /// </summary>     /// <param name='s'>A string containing a date and time to convert.</param>     /// <param name='result'>     /// When this method returns, contains the <see cref='DateTime'/> value equivalent to the date and time      /// contained in <paramref name='s'/>, expressed as <i>Coordinated Universal Time (UTC)</i>,      /// if the conversion succeeded, or <see cref='DateTime.MinValue'>MinValue</see> if the conversion failed.      /// The conversion fails if the s parameter is a <b>null</b> reference (Nothing in Visual Basic),      /// or does not contain a valid string representation of a date and time.      /// This parameter is passed uninitialized.     /// </param>     /// <returns><b>true</b> if the <paramref name='s'/> parameter was converted successfully; otherwise, <b>false</b>.</returns>     /// <remarks>     /// The string <paramref name='s'/> is parsed using formatting information in the <see cref='DateTimeFormatInfo.InvariantInfo'/> object.      /// </remarks>     public static bool TryParse(string s, out DateTime result)     {         //------------------------------------------------------------         //  Attempt to convert string representation         //------------------------------------------------------------         bool wasConverted   = false;         result              = DateTime.MinValue;          if (!String.IsNullOrEmpty(s))         {             DateTime parseResult;             if (DateTime.TryParseExact(Rfc822DateTime.ConvertZoneToLocalDifferential(s), Rfc822DateTime.Rfc822DateTimePatterns, DateTimeFormatInfo.InvariantInfo, DateTimeStyles.AdjustToUniversal, out parseResult))             {                 result          = DateTime.SpecifyKind(parseResult, DateTimeKind.Utc);                 wasConverted    = true;             }         }          return wasConverted;     }     #endregion } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Ask A Question

Stats

  • Questions 117k
  • Answers 118k
  • Best Answers 0
  • User 1
  • Popular
  • Answers
  • Editorial Team

    How to approach applying for a job at a company ...

    • 7 Answers
  • Editorial Team

    How to handle personal stress caused by utterly incompetent and ...

    • 5 Answers
  • Editorial Team

    What is a programmer’s life like?

    • 5 Answers
  • Editorial Team
    Editorial Team added an answer class Program { static void Main(string[] args) { Timer timer… May 11, 2026 at 10:50 pm
  • Editorial Team
    Editorial Team added an answer Use GROUP_CONCAT SELECT GROUP_CONCAT(bar) FROM TABLE GROUP BY foo; May 11, 2026 at 10:50 pm
  • Editorial Team
    Editorial Team added an answer Your code doesn't work because the function is not returning… May 11, 2026 at 10:50 pm

Related Questions

How do I convert a DateTime structure to its equivalent RFC 3339 formatted string
I have two tables: Application applicationid (int) applicationname (varchar) isavailable (bit) and Holidays applicationid
How do I convert a datetime string in local time to a string in
How do I convert a datetime or date object into a POSIX timestamp in

Trending Tags

analytics british company computer developers django employee employer english facebook french google interview javascript language life php programmer programs salary

Top Members

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.