So i have a field that datatype is a text which is feed into the database. What it returns is something along the lines of this:
ddd MMM dd hh:mm:ss yyyy
What i would like for it to do is be displayed as something like this:
ddd MMM dd yyyy hh:mm:ss
I can achive this by using Format() which would look like this:
Format(alarmdet.AlarmStart, "ddd MMM dd yyyy hh:mm:ss) AS AlarmDateTime
So that is all well and good, however; i want to beable to convert this value into a datetime. I've tried using CVDate, CDate, DateValue and every time i get returned an error claiming a mismatched datatype. How would i go about converting this exact string into a datetime?
Note:
So you are aware, i am able to get it to convert successfully when in the English(united states) locale, but i am attempting to get this to work in the Portuguese(portugal) locale. In this locale i get the mismatch datatype error which i think has something to do with how access reads the abrivated months. Is there something i am missing to make this successfully work in an international setting?
Also i would like to convert something similar to this in a different field to have it appear as so:
MM/dd/yyyy
Again i know i can get this using Format(), but i would like to to be converted into a DateTime. How would i go about doing this?
Any help or suggestions are greatly appreciated.
Thanks.
You can use a dictionary object to convert the English month abbreviation into a number regardless of your locale. The below function will convert the format you listed above into a valid date/time. You will probably want to write a better error handler.
EDIT: If you end up using this solution use HansUp's Split() method rather than my mid(); it's much cleaner and safer.
Use
Seems to me the first challenge is reading your custom string as a valid date. In your previous question, you gave this as a sample string stored in your [AlarmStart] field:
The problem is VBA doesn't recognize that string as containing a valid Date/Time value.
However, if you revise that string (drop the day of the week and move year before time), you can produce a string which VBA recognizes as a valid date.
So you can use a function to split apart the string, rearrange the pieces you need, and return a Date/Time value.
(The Split() and Join() functions are available starting with Access 2000.)
And, once you have a Date/Time value from your string, you can use the Format() function to display it however you like.
This works as described with English month name abbreviations. I don't know what will happen with Portuguese.