Inverse function of FormatDateTime

formatdatetime delphi
delphi string to date

I am looking for a function to reverse any string (YYYYMDD,YY/MM/DD,YYMMDD,...) created by the function FormatDateTime to datetime.

example

I have a string-date in format YYYYMMDDcreated by FormatDateTime

mydatestr:=FormatDateTime('YYYYMMDD',Mydate); 

now how I can convert mydatestr to DateTime again?

UPDATE

these functions

function StrToDate(const S: string): TDateTime; overload;
function StrToDate(const S: string;
  const FormatSettings: TFormatSettings): TDateTime; overload;

function StrToDateTime(const S: string): TDateTime; overload;
function StrToDateTime(const S: string;
  const FormatSettings: TFormatSettings): TDateTime; overload;

do not support passing a string with the format to convert.

I am looking something like this

Mydatetime:=InvFormatDatetime('20091225','yyyymmdd');

or

Mydatetime:=InvFormatDatetime('20090108','yyyyddmm');

It is quite easy with existing solution, StrToDateFmt function in rxDateutil.pas unit from RX package, which can be downloaded here: http://sourceforge.net/projects/rxlib/

EDIT:

Mentioned above function and StrToDateFmt from rxDateutil.pas are doing exactly what you expect, converting string to datetime using specified string mask, the code is too large to be included as this unit contains also other date functions, some of them required for converting string to date.

Example of use:

Result := StrToDateFmtDef('MM/DD/YYYY', '11/11/2011', Now);

Strings.FormatDateTime(DateTime, DateFormat) Method (Microsoft , This example demonstrates the use of the FormatDateTime function. VB Copy. ' English (US) format� FormatDateTime(Date [, NamedFormat]) The FormatDateTime function syntax has these arguments: Argument. Description. Date. Required. Date expression to be formatted.

Note: Unfortunately, as pointed out by Martien in this answer's comments, this solution will not work for cases where the date includes no date separator. However, I'm going to leave the answer up for anyone that may find it useful regardless.

I liked Tuncay's answer but there were a couple of problems with it. I'd have left a comment but I don't have enough reputation points.

So, here's the corrected version of Tuncay's answer (amending "TFormatSetting" missing an "s" and specified the format settings date separator):

function AnyStringToDate(fmt, dt: String) : TDateTime;
var
  fs : TFormatSettings;
Begin
  fs := TFormatSettings.Create;
  fs.DateSeparator := '-';
  fs.ShortDateFormat := fmt;

  result := StrToDateDef(dt, 0, fs);
End;

Identical to Tuncay's answer, AnyStringToDate can be used as follows:

mydate := AnyStringToDate('YYYY-MM-DD', '2015-01-20');

Inverse function to format-date - date - iOS, in xslt 2.0, the function format-date will convert a date to string in a desired format, e.g. <xsl:value-of select = "format-date(xs:date('2000-01-01'), '[D01] [MN,*-3]� Inverse function of FormatDateTime. Ask Question Asked 9 years, 9 months ago. Active 18 days ago. Viewed 18k times 19. 4. I am looking for a function to

Without using any external library, you can do something like:

function AnyStringToDate(fmt, dt: String) : TDateTime;
var
  fs : TFormatSettings;
Begin
  fs := TFormatSettings.Create;
  fs.ShortDateFormat := fmt;

  result := StrToDateDef(dt, 0, fs);
End;

and then use it like:

  mydate := AnyStringToDate('YYYY-MM-DD', '2015-01-20');

I havent compiled this, but the idea simple.

Formatdatetime, Inverse function of FormatDateTime (5) Did you check StrToDate and StrToDateTime ? I am looking for a function to reverse any string ( YYYYMDD , YY/MM/DD� The VBA FORMATDATETIME function is listed under the data type conversion category of VBA functions. When you use it in a VBA code, it returns a string by applying date and time format to it and returns it as a string. In simple words, when you apply an expression it can apply data and time format to it.

You could use StrToDateFmt function of JvJCLUtils unit belonging to JEDI Code Library

in your case :

Function InvFormatDatetime ( dateString :String; dateFormat :String ) : TDateTime;
begin
   Result := JvJCLUtils.StrToDateFmt ( dateFormat, dateString );
end;

DATE_FORMAT, on the supported locales. The options that can be used by DATE_FORMAT(), as well as its inverse STR_TO_DATE() and the FROM_UNIXTIME() function, are: � VBA FormatDateTime Function Examples. The following examples use the VBA FormatDateTime function to format various date/time expressions in different ways. Note that, although the expressions are formatted as dates/times, the result that is returned from the FormatDateTime function is always a String data type. Example 1 - Format Dates

Did you check StrToDate and StrToDateTime ?

Impala Date and Time Functions, Some of the date/time functions are affected by the setting of the to the appropriate local time zone by calling the inverse function, FROM_UTC_TIMESTAMP() . FormatDateTime function. 12/12/2018; 2 minutes to read; In this article. Returns an expression formatted as a date or time. Syntax. FormatDateTime(Date, [ NamedFormat]). The FormatDateTime function syntax has these parts:

ToDateTime (convert string or number to a date or timestamp), object definitions, and functions � Function syntax and formula components HypergeometricDistribution � Intercept � InverseBetaDistribution (inverse of the� The FormatDateTime function formats and returns a valid date or time expression. Syntax. FormatDateTime(date,format) Parameter Description; date: Required. Any valid

datetime — Basic date and time types — Python 3.8.5 documentation, This is the inverse of the function date.isocalendar() . parsing arbitrary ISO 8601 strings - it is only intended as the inverse operation of datetime.isoformat() . Inverse function of FormatDateTime (5) Did you check StrToDate and StrToDateTime ? I am looking for a function to reverse any string ( YYYYMDD , YY/MM/DD , YYMMDD ,) created by the function FormatDateTime to datetime.

PMML 4.3 - Built-in functions, Pseudo-declaration of PMML built-in function formatDatetime: is called the probit function, and can be expressed in terms of the inverse error function:. FormatDateTime formats the TDateTime value given by DateTime using the format given by Format.See the table below for information about the supported format strings. If the string specified by the Format parameter is empty, the TDateTime value is formatted as if a 'c' format specifier had been given.

Comments
  • possible duplicate of How do I convert an ISO 8601 string to a Delphi TDate?
  • This function has also been ported to JVCL. It is in the "JvJCLUtils" Unit
  • Note that StrToDateFmt only does pure dates. It won't for example convert 'yyyymmddhhmmss'.
  • I still wonder why people use so frustrating format for expressing dates/times: '11/11/2011' - what is 11? Month, Day? or Day/Month? Yeah, you know the mask, but it's locale specific...Why not using a deterministic/strict standard, ISO8601 for example?
  • Thanks for the fix!
  • It doesn't work for strings that have format 'yyyymmdd' without the '-' separators :'(
  • Gah! I've been ninja'd! x.x +1
  • @Liz, i knew these functions, and they not support the functionality wich i am looking for.
  • This function assumes that the only day and month formats used are DD and MM, when they can in fact be between 1 and 4 characters long, and any format amy appear more than once. This code also ignores TwoDigitYearCenturyWindow.