Gold
Gold

Reputation: 62424

format date in c#

How can I format a date as dd/mm/yyyy or mm/dd/yy ?

Like in VB format("dd/mm/yy",now)

How can I do this in C#?

Upvotes: 18

Views: 60346

Answers (8)

Zunair
Zunair

Reputation: 1195

In C# 6.0 or later (which includes .NET Framework 4.6, .NET Core 1.0, and all subsequent versions)

string formattedDate = $"{DateTime.Now:dd/MM/yyyy}";

Upvotes: 0

Arun Prasad E S
Arun Prasad E S

Reputation: 10115

I think this is simple as you can convert to and from any format without any confusion

 DateTime.ParseExact(txt.Text, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy/MM/dd"));

Upvotes: 1

user2146538
user2146538

Reputation: 344

I ran into the same issue. What I needed to do was add a reference at the top of the class and change the CultureInfo of the thread that is currently executing.

using System.Threading;

string cultureName = "fr-CA";
Thread.CurrentThread.CurrentCulture = new CultureInfo(cultureName);

DateTime theDate = new DateTime(2015, 11, 06);
theDate.ToString("g");
Console.WriteLine(theDate);

All you have to do is change the culture name, for example: "en-US" = United States "fr-FR" = French-speaking France "fr-CA" = French-speaking Canada etc...

Upvotes: 1

Nir
Nir

Reputation: 29584

Better yet, use just

DateTime.Now.ToString() 

or

DateTime.Now.ToString(CultureInfo.CurrentCulture) 

to use the format the user prefers.

Upvotes: 3

Arjan Einbu
Arjan Einbu

Reputation: 13672

string.Format("{0:dd/MM/yyyy}", DateTime.Now)

Look up "format strings" on MSDN to see all formatting options.

Use yy, yyyy, M, MM, MMM, MMMM, d, dd, ddd, dddd for the date component

Use h, hh, H, HH, m, mm, s, ss for the time-of-day component

Upvotes: 9

M4N
M4N

Reputation: 96551

It's almost the same, simply use the DateTime.ToString() method, e.g:

DateTime.Now.ToString("dd/MM/yy");

Or:

DateTime dt = GetDate(); // GetDate() returns some date
dt.ToString("dd/MM/yy");

In addition, you might want to consider using one of the predefined date/time formats, e.g:

DateTime.Now.ToString("g");
// returns "02/01/2009 9:07 PM" for en-US
// or "01.02.2009 21:07" for de-CH 

These ensure that the format will be correct, independent of the current locale settings.

Check the following MSDN pages for more information


Some additional, related information:

If you want to display a date in a specific locale / culture, then there is an overload of the ToString() method that takes an IFormatProvider:

DateTime dt = GetDate();
dt.ToString("g", new CultureInfo("en-US")); // returns "5/26/2009 10:39 PM"
dt.ToString("g", new CultureInfo("de-CH")); // returns "26.05.2009 22:39"

Or alternatively, you can set the CultureInfo of the current thread prior to formatting a date:

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
dt.ToString("g"); // returns "5/26/2009 10:39 PM"

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-CH");
dt.ToString("g"); // returns "26.05.2009 22:39"

Upvotes: 48

Canavar
Canavar

Reputation: 48088

Try this :

String.Format("{0:MM/dd/yyyy}", DateTime.Now); // 01/31/2009
String.Format("{0:dd/MM/yyyy}", DateTime.Now); // 31/01/2009
String.Format("{dd/MM/yyyy}", DateTime.Now); // 31/01/2009

Upvotes: 3

Sorskoot
Sorskoot

Reputation: 10310

In you can also write

DateTime aDate = new DateTime(); 
string s = aDate.ToShortDateString();

for a short notation

or

DateTime aDate = new DateTime(); 
string s = aDate.ToLongDateString();

for a long notation like "Sunday, Febuary 1, 2009".

Or take a look at MSDN for the possibities of .ToString("???");

Upvotes: 4

Related Questions