473,372 Members | 884 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,372 software developers and data experts.

Making my DateTime object think its American :-)

Hi all,

I'm having a bit of a problem working with dates. My computer is british,
but I'm developing an american application so I therefore need to use american
dates. But I can't get my DateTime object to "act" american.

Let me give an example:

In order to take in an american date, I tell it which culture the date will
be formatted according to:

if(!(DateTime.TryParse(txtAvailableFrom.Text, new CultureInfo("en-US"), DateTimeStyles.None,
out arrivalDate))){

This all works fine and the DateTime interprets the textbox contents correctly
as an American date. The problem comes later when I try and use the date.

For example, when I try and do date.ToString(), it outputs it in the British
format. Now this one isnt a problem because I know how to force it to output
the american format. (Though it is inconvienient - I'd like the DateTime
object to remember or know somehow that its got an American date and output
accordingly)

The real showstopper for me though is when it comes to passing the date to
the database.

I want all the dates passed to the database to be in the American format.
Unfortunately, when I pass the DateTime object as a parameter to my Stored
Procedure the date is getting stored in the british format.

It's like the DateTime intrinsically knows that its in Britain, even though
I forced it to accept an American date.

Can anyone tell me if there's anyway I can force it to act like an American
date both when outputing and more importantly when I pass it to the database?
I need it to forget that its in Britain and get it to start acting American
stylee pronto! :-)

Thanks to anyone who can help. This thing has been driving me crazy for ages.
It's getting to crunch time soon and I'm begining to get worried :-(

Thanks again

Simon
Feb 15 '06 #1
9 2034
[aspnet ng trimmed]

Simon Harvey wrote:
Hi all,

I'm having a bit of a problem working with dates. My computer is british,
but I'm developing an american application so I therefore need to use american
dates. But I can't get my DateTime object to "act" american.
The DateTime structure itself just stores a date and a time; it doesn't
know anything about formats. It's just a number, really.

Let me give an example:

In order to take in an american date, I tell it which culture the date will
be formatted according to:

if(!(DateTime.TryParse(txtAvailableFrom.Text, new CultureInfo("en-US"), DateTimeStyles.None,
out arrivalDate))){

This all works fine and the DateTime interprets the textbox contents correctly
as an American date.
whispers: DateTimePicker? :)
The problem comes later when I try and use the date.

For example, when I try and do date.ToString(), it outputs it in the British
format. Now this one isnt a problem because I know how to force it to output
the american format. (Though it is inconvienient - I'd like the DateTime
object to remember or know somehow that its got an American date and output
accordingly)
See above. As expected, in the absence of any explicit cultural
information, the local culture is used - which as you have told us is
British. You wouldn't expect "2,3", entered in an app and parsed into a
double (2.3) with fr-FR, to 'remember' that it's "2,3" not "2.3", would
you? It's just a number.
The real showstopper for me though is when it comes to passing the date to
the database.

I want all the dates passed to the database to be in the American format.
Unfortunately, when I pass the DateTime object as a parameter to my Stored
Procedure the date is getting stored in the british format.


Now this is confusing. If you have a SQL Server stored proc with a date
type parameter, and you use a SqlParameter object to supply the value
of this parameter, there shouldn't be a problem. The only way I can
think of that you might get a problem is if the date is being converted
to a string, supplied to a text parameter (eg a varchar) and converted
back within the sproc. Is this happening? Let's see the code that
invokes the sproc, along with the parameter-filling stuff.

--
Larry Lard
Replies to group please

Feb 15 '06 #2
Stupid suggestion, but wouldn't it be easier, for the duration of the
development, to go through Control Panel and change your regional settings
to English(United States).

Steve

"Simon Harvey" <no******@hotmail.com> wrote in message
news:7c**************************@news.microsoft.c om...
Hi all,

I'm having a bit of a problem working with dates. My computer is british,
but I'm developing an american application so I therefore need to use
american dates. But I can't get my DateTime object to "act" american.
Let me give an example:

In order to take in an american date, I tell it which culture the date
will be formatted according to:

if(!(DateTime.TryParse(txtAvailableFrom.Text, new CultureInfo("en-US"),
DateTimeStyles.None, out arrivalDate))){

This all works fine and the DateTime interprets the textbox contents
correctly as an American date. The problem comes later when I try and use
the date.

For example, when I try and do date.ToString(), it outputs it in the
British format. Now this one isnt a problem because I know how to force it
to output the american format. (Though it is inconvienient - I'd like the
DateTime object to remember or know somehow that its got an American date
and output accordingly)

The real showstopper for me though is when it comes to passing the date to
the database.

I want all the dates passed to the database to be in the American format.
Unfortunately, when I pass the DateTime object as a parameter to my Stored
Procedure the date is getting stored in the british format.

It's like the DateTime intrinsically knows that its in Britain, even
though I forced it to accept an American date.
Can anyone tell me if there's anyway I can force it to act like an
American date both when outputing and more importantly when I pass it to
the database? I need it to forget that its in Britain and get it to start
acting American stylee pronto! :-)

Thanks to anyone who can help. This thing has been driving me crazy for
ages. It's getting to crunch time soon and I'm begining to get worried :-(

Thanks again

Simon

Feb 15 '06 #3
Try this stuff in a web.config file...

<!--2/10/2006 10:52:49 AM -->
<globalization culture="auto" uiCulture="auto" /> // on my "American"
machine

<!--2/10/2006 10:52:49 AM-->
<globalization culture="en-US" uiCulture="en-US" />

<!--10/02/2006 10:55:56-->
<globalization culture="en-GB" uiCulture="en-GB" />

<%= Clinton Gallagher
NET csgallagher AT metromilwaukee.com
URL http://clintongallagher.metromilwaukee.com/

"Simon Harvey" <no******@hotmail.com> wrote in message
news:7c**************************@news.microsoft.c om...
Hi all,

I'm having a bit of a problem working with dates. My computer is british,
but I'm developing an american application so I therefore need to use
american dates. But I can't get my DateTime object to "act" american.
Let me give an example:

In order to take in an american date, I tell it which culture the date
will be formatted according to:

if(!(DateTime.TryParse(txtAvailableFrom.Text, new CultureInfo("en-US"),
DateTimeStyles.None, out arrivalDate))){

This all works fine and the DateTime interprets the textbox contents
correctly as an American date. The problem comes later when I try and use
the date.

For example, when I try and do date.ToString(), it outputs it in the
British format. Now this one isnt a problem because I know how to force it
to output the american format. (Though it is inconvienient - I'd like the
DateTime object to remember or know somehow that its got an American date
and output accordingly)

The real showstopper for me though is when it comes to passing the date to
the database.

I want all the dates passed to the database to be in the American format.
Unfortunately, when I pass the DateTime object as a parameter to my Stored
Procedure the date is getting stored in the british format.

It's like the DateTime intrinsically knows that its in Britain, even
though I forced it to accept an American date.
Can anyone tell me if there's anyway I can force it to act like an
American date both when outputing and more importantly when I pass it to
the database? I need it to forget that its in Britain and get it to start
acting American stylee pronto! :-)

Thanks to anyone who can help. This thing has been driving me crazy for
ages. It's getting to crunch time soon and I'm begining to get worried :-(

Thanks again

Simon

Feb 15 '06 #4
I'm with Steve on this one. Change your PC setting in control panel for
the duration of your build. That would only apply if the host machine
is going to be in the US. Ive read about people have problems changing
CultureInfo.

Jeremy
http://blackstaronline.net/hgtit

Feb 15 '06 #5
If you blokes would learn to spell properly and stop having John Cleese
attack us with Declarations of Revocation
( http://www.stephaniemiller.com/decla...revocation.htm )

you probably would not need to post questions like this. :-)
Peter

--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"Simon Harvey" wrote:
Hi all,

I'm having a bit of a problem working with dates. My computer is british,
but I'm developing an american application so I therefore need to use american
dates. But I can't get my DateTime object to "act" american.

Let me give an example:

In order to take in an american date, I tell it which culture the date will
be formatted according to:

if(!(DateTime.TryParse(txtAvailableFrom.Text, new CultureInfo("en-US"), DateTimeStyles.None,
out arrivalDate))){

This all works fine and the DateTime interprets the textbox contents correctly
as an American date. The problem comes later when I try and use the date.

For example, when I try and do date.ToString(), it outputs it in the British
format. Now this one isnt a problem because I know how to force it to output
the american format. (Though it is inconvienient - I'd like the DateTime
object to remember or know somehow that its got an American date and output
accordingly)

The real showstopper for me though is when it comes to passing the date to
the database.

I want all the dates passed to the database to be in the American format.
Unfortunately, when I pass the DateTime object as a parameter to my Stored
Procedure the date is getting stored in the british format.

It's like the DateTime intrinsically knows that its in Britain, even though
I forced it to accept an American date.

Can anyone tell me if there's anyway I can force it to act like an American
date both when outputing and more importantly when I pass it to the database?
I need it to forget that its in Britain and get it to start acting American
stylee pronto! :-)

Thanks to anyone who can help. This thing has been driving me crazy for ages.
It's getting to crunch time soon and I'm begining to get worried :-(

Thanks again

Simon

Feb 15 '06 #6
I've had this problem before, too. I vaguely recall solving it by
passing the date to SQL server as a string representing a universal
date object, e.g.

sqlParam.Value = String.Format("{0:yyyy-MM-dd}", DateTime.Now);

It was a long time ago, so it may need some tweaking, but hopefully
this gives you something to start with.

Feb 15 '06 #7
A fantastic link - thank you. That has put a smile on my day ;-p

One that *really* grated on me: the Steam (Valve) installer asks you to
select a language, and lists e.g. French with the French flag, German with
the German flag, and (at the top) English with the stars and stripes. Much
gnashing of teeth over here in the UK.

<g>

Marc
Feb 15 '06 #8
Hehe. Obviously, they have got the flags backwards. We Yanks are all simply
transplanted British Subjects, as we so often forget.
--
Co-founder, Eggheadcafe.com developer portal:
http://www.eggheadcafe.com
UnBlog:
http://petesbloggerama.blogspot.com


"Marc Gravell" wrote:
A fantastic link - thank you. That has put a smile on my day ;-p

One that *really* grated on me: the Steam (Valve) installer asks you to
select a language, and lists e.g. French with the French flag, German with
the German flag, and (at the top) English with the stars and stripes. Much
gnashing of teeth over here in the UK.

<g>

Marc

Feb 15 '06 #9
Try this

System.Threading.Thread.CurrentThread.CurrentCultu re = new
System.Globalization.CultureInfo("en-US");

or ....

System.Threading.Thread.CurrentThread.CurrentCultu re = new
System.Globalization.CultureInfo("en-GB");

This will set the date time control to work in American/British
formating without screwing with your control panel settings

Feb 16 '06 #10

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

1
by: Sorisio, Chris | last post by:
Ladies and gentlemen, I've imported some data from a MySQL database into a Python dictionary. I'm attempting to tidy up the date fields, but I'm receiving a 'mx.DateTime.Error: cannot convert...
4
by: Max M | last post by:
# -*- coding: latin-1 -*- """ I am currently using the datetime package, but I find that the design is oddly asymmetric. I would like to know why. Or perhaps I have misunderstood how it...
0
by: Symon R | last post by:
This is a bit of a weird one that I haven't yet been able to solve - I'm hoping someone out there can disprove my findings and tell me where I've gone wrong! I have designed a web service that...
5
by: I am Sam | last post by:
I have created this DateTime object and instanced it I think correctly DateTime myClubNow1=new...
11
by: Cor Ligthert | last post by:
Hello everybody, Jay and Herfried are telling me every time when I use CDate that using the datetime.parseexact is always the best way to do String to datetime conversions. They don't tell why...
0
by: Keith Jackson | last post by:
I have, over the last week, been attempting to play with the ObjectDataSource binding an ASP.NET 2.0 UI through to a Data Access Assembly. Selection of data using the new GridView control worked...
9
by: Simon Harvey | last post by:
Hi all, I'm having a bit of a problem working with dates. My computer is british, but I'm developing an american application so I therefore need to use american dates. But I can't get my...
4
by: dan688 | last post by:
Morning, Could'nt find a post / site that has addressed this issue and I would be very surprised if I'm the first to find this. I am currently having an issue passing a parameter via a stored...
5
by: Nick Gilbert | last post by:
Hi, One of our servers is behaving differently to all the others when printing dates. They seem to be outputting in American format (12 hour) when the default for a UK machine should be UK...
204
by: Masood | last post by:
I know that this topic may inflame the "C language Taleban", but is there any prospect of some of the neat features of C++ getting incorporated in C? No I am not talking out the OO stuff. I am...
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...
0
by: ryjfgjl | last post by:
In our work, we often need to import Excel data into databases (such as MySQL, SQL Server, Oracle) for data analysis and processing. Usually, we use database tools like Navicat or the Excel import...
0
by: taylorcarr | last post by:
A Canon printer is a smart device known for being advanced, efficient, and reliable. It is designed for home, office, and hybrid workspace use and can also be used for a variety of purposes. However,...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: aa123db | last post by:
Variable and constants Use var or let for variables and const fror constants. Var foo ='bar'; Let foo ='bar';const baz ='bar'; Functions function $name$ ($parameters$) { } ...
0
by: ryjfgjl | last post by:
If we have dozens or hundreds of excel to import into the database, if we use the excel import function provided by database editors such as navicat, it will be extremely tedious and time-consuming...
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.