Solved

Convert string to Date Time

Posted on 2004-03-27
11
585 Views
Last Modified: 2010-04-05
I am reading a date field 'mm/dd/yy' from a table.  I need to be able to perform calculations on it to determine if it is older than 90 days.  When I pull it from the table using the .AsDateTime, it comes back with the value '0'.  However when I convert it to a string, it works fine and displays the date.  I am assuming this is because my date is not formatted correctly including the time 'MM/DD/YY HH:MM:SS.'  Is there a way I can get around this and just store and work with the date only?  

verifiedDate := Form1.tblAgents.fieldbyname('EmailVerified').AsDateTime;
strVerifiedDate := DateTimeToStr(verifiedDate);
 
 
0
Comment
Question by:jennifere
  • 4
  • 3
  • 2
  • +2
11 Comments
 
LVL 6

Expert Comment

by:Amir Azhdari
Comment Utility
0
 
LVL 11

Expert Comment

by:shaneholmes
Comment Utility

It shouldn't be zero, place a condition break here

--> verifiedDate := Form1.tblAgents.fieldbyname('EmailVerified').AsDateTime;
      strVerifiedDate := DateTimeToStr(verifiedDate);

then run, and when it breaks there, place mouse over verifieddate, look at the hint, see if it shows its value.

Shane


0
 

Author Comment

by:jennifere
Comment Utility
I did place a condition break there-  this is how I determined the value '0'.  I have no idea why it is saying 0.  I checked the field in the table and it is '12/30/03'.

Basically- I'm at this point.  I have the date stored as a string value: strVerifiedDate.  I just need to find a way to convert this string to a date.  I have tried 'verifiedDate := StrToDate(strVerifiedDate);' but I am having no luck..
0
 
LVL 12

Expert Comment

by:esoftbg
Comment Utility
try this:

function  Str_To_Date(DS: string): TDate;
var
  D:      Word;
  M:      Word;
  Y:      Integer;
  I:      Integer;
  DT:     TDate;
  SD:     string;
  SM:     string;
  SY:     string;
begin
  DT := 0;
  try
    SD := Copy(DS, 4, 2);
    SM := Copy(DS, 1, 2);
    SY := Copy(DS, 6, 2);
    Val(SD, D, I);
    Val(SM, M, I);
    Val(SY, Y, I);
    DT := EncodeDate(Y, M, D);
  finally
    Result := DT;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  DT:     TDate;
begin
  DT := Str_To_Date('03/27/04');
  ShowMessage(FormatDateTime('MM/dd/yy', DT));
end;

emil
0
 
LVL 12

Expert Comment

by:esoftbg
Comment Utility
Excuse me but replace
>   DT := EncodeDate(Y, M, D);
with
      DT := EncodeDate(2000+Y, M, D);
0
Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

 
LVL 12

Expert Comment

by:esoftbg
Comment Utility
and:
>    SY := Copy(DS, 6, 2);
with
    SY := Copy(DS, 7, 2);
0
 
LVL 11

Accepted Solution

by:
shaneholmes earned 250 total points
Comment Utility
Your value is not zero, believe me. If it was 0, then

 DateTimeToStr(verifiedDate);

would give you 12/31/1899

and its not, its giving you your value

try this

var
 hrs, mins, secs, msecs: Word;

 DecodeDate (verifiedDate, Ahrs, Amins, Asecs, Amsecs);

 now look at this values during a break

this should verify that verifiedDate is not zero

Shane
0
 
LVL 11

Expert Comment

by:shaneholmes
Comment Utility
also try doing this as well

var
 DT1: TDateTime;
 
 DT1:= EncodeDate(StrToDate('12/31/1899'),AHrs, AMins, ASecs, AMSecs);
 
 if verifiedDate > DT1 then its not zero!

Shane

 
0
 
LVL 17

Expert Comment

by:mokule
Comment Utility
Shane
May be it is clear may not to sombody but checking verifiedDate should be done after excecution of the assignment
verifiedDate := ....
0
 
LVL 11

Expert Comment

by:shaneholmes
Comment Utility
right, i assumed jennifer would step through at least one line past the break, i guess i should have been more clear about it... thanks for waking me up - <SMILE>

Shane
0
 

Author Comment

by:jennifere
Comment Utility
Oops... I was looking at the wrong field.  My date field actually says '12/30/1899'.  Maybe this is explains it....    Thanks- that makes sense now.
0

Featured Post

6 Surprising Benefits of Threat Intelligence

All sorts of threat intelligence is available on the web. Intelligence you can learn from, and use to anticipate and prepare for future attacks.

Join & Write a Comment

Introduction Raise your hands if you were as upset with FireMonkey as I was when I discovered that there was no TListview.  I use TListView in almost all of my applications I've written, and I was not going to compromise by resorting to TStringGrid…
In my programming career I have only very rarely run into situations where operator overloading would be of any use in my work.  Normally those situations involved math with either overly large numbers (hundreds of thousands of digits or accuracy re…
Illustrator's Shape Builder tool will let you combine shapes visually and interactively. This video shows the Mac version, but the tool works the same way in Windows. To follow along with this video, you can draw your own shapes or download the file…
When you create an app prototype with Adobe XD, you can insert system screens -- sharing or Control Center, for example -- with just a few clicks. This video shows you how. You can take the full course on Experts Exchange at http://bit.ly/XDcourse.

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

9 Experts available now in Live!

Get 1:1 Help Now