How to convert date format to DD-MM-YYYY in C# - c#

How to convert date format to DD-MM-YYYY in C#? I am only looking for DD-MM-YYYY format not anything else.

string formatted = date.ToString("dd-MM-yyyy");
will do it.
Here is a good reference for different formats.

According to one of the first Google search hits:
http://www.csharp-examples.net/string-format-datetime/
// Where 'dt' is the DateTime object...
String.Format("{0:dd-MM-yyyy}", dt);

Here is the Simplest Method.
This is the String value: "5/13/2012"
DateTime _date;
string day = "";
_date = DateTime.Parse("5/13/2012");
day = _date.ToString("dd-MMM-yyyy");
It will output as: 13-May-2012

string formattedDate = yourDate.ToString("dd-MM-yyyy");

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

DateTime s1 = System.Convert.ToDateTime(textbox.Trim());
DateTime date = (s1);
String frmdt = date.ToString("dd-MM-yyyy");
will work

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

First convert your string into DateTime variable:
DateTime date = DateTime.Parse(your variable);
Then convert this variable back to string in correct format:
String dateInString = date.ToString("dd-MM-yyyy");

Here we go:
DateTime time = DateTime.Now;
Console.WriteLine(time.Day + "-" + time.Month + "-" + time.Year);
WORKS! :)

From C# 6.0 onwards (Visual Studio 2015 and newer), you can simply use an interpolated string with formatting:
var date = new DateTime(2017, 8, 3);
var formattedDate = $"{date:dd-MM-yyyy}";

Do you have your date variable stored as a String or a Date type?
In which case you will need to do something like
DateTime myDate = null;
DateTime.TryParse(myString,myDate);
or
Convert.ToDateTime(myString);
You can then call ToString("dd-MM-yyyy") on your date variable

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...

The problem is that you're trying to convert a string, so first you should cast your variable to date and after that apply something like
string date = variableConvertedToDate.ToString("dd-MM-yyyy")
or
string date = variableConvertedToDate.ToShortDateString() in this case result is dd/MM/yyyy.

dateString = "not a date";
// Exception: The string was not recognized as a valid DateTime. There is an unknown word starting at index 0.
DateTime dateTime11; // 1/1/0001 12:00:00 AM
bool isSuccess2 = DateTime.TryParseExact(dateString, "MM/dd/yyyy", provider, DateTimeStyles.None, out dateTime11);

var dateTimeString = "21‎-‎10‎-‎2014‎ ‎15‎:‎40‎:‎30";
dateTimeString = Regex.Replace(dateTimeString, #"[^\u0000-\u007F]", string.Empty);
var inputFormat = "dd-MM-yyyy HH:mm:ss";
var outputFormat = "yyyy-MM-dd HH:mm:ss";
var dateTime = DateTime.ParseExact(dateTimeString, inputFormat, CultureInfo.InvariantCulture);
var output = dateTime.ToString(outputFormat);
Console.WriteLine(output);
Try this, it works for me.

you could do like this:
return inObj == DBNull.Value ? "" : (Convert.ToDateTime(inObj)).ToString("MM/dd/yyyy").ToString();

Related

How to convert a date in the form of a string with this format (yyyy-MM-dd HH:mm:ss) to a DateTime object of this format (dd-MM-yyyy HH:mm:ss)

I'm currently using C# and I want to convert a string like "2022-01-15 18:40:30" to a DateTime object with this format "15-01-2022 18:40:30". Below is what I've tried.
string stringDate = "2022-01-15 18:40:30";
string newStringDate = DateTime.ParseExact(date, "yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture).ToString("dd-MM-yyyy HH:mm:ss");
DateTime newDateFormat = DateTime.ParseExact(newStringDate, "dd-MM-yyyy HH:mm:ss", CultureInfo.InvariantCulture);
But the result i keep getting is "2022-01-15T18:40:30"
Any help would be appreciated
As others pointed out, you have a internal data value for DateTime.
So, FOR SURE we suggest that you convert the string into that internal format.
Once you do that, then you are free to output that internal date time value to ANY kind of format and output you want.
Thus, we have this:
string stringDate = "2022-01-15 18:40:30";
DateTime MyDate = DateTime.ParseExact(stringDate,"yyyy-MM-dd HH:mm:ss",CultureInfo.InvariantCulture);
// now we can output convert to anything we want.
Debug.Print("Day of week = " + MyDate.ToString("dddd"));
Debug.Print("Month = " + MyDate.ToString("MM"));
Debug.Print("Month (as text) = " + MyDate.ToString("MMMM"));
// desired format
Debug.Print(MyDate.ToString("dd-MM-yyyy HH:mm:ss"));
And output is this:
DateTime date = Convert.ToDateTime("2022-01-15");
DateTime time = Convert.ToDateTime("18:40:30");
DateTime dt = Convert.ToDateTime(date.ToShortDateString() + " " + time.ToShortTimeString());
try this style
Try this one:
string stringDate = "2022-01-15 18:40:30";
Console.WriteLine((DateTime.Parse(stringDate)).ToString("dd-MM-yyyy HH:mm:ss"));
The DateTime object by itself does not have a specific "format".
The string representation gets created when you call the .ToString() function.
There are multiple overloads of the ToString function with which you can specify the format.

Split string on basis of "/"

I have a string:
string s = "1/09/2017 12:00:00 AM";
Output I want to show is 1/09/17 (basically short date).
And if
string s ="30/09/2017 12:00:00 AM"
Output I want to show is 30/09/17 (basically short date).
What I have tried is:
string[] values = s.Split('/');
string a = values[0]+"/"+values[1]+"/"+values[2].
I am confused how to get the 3rd part need help.
Use .NET built-in DateTime parsing.
For example:
string s = "1/09/2017 12:00:00 AM";
string format = "d/MM/yyyy hh:mm:ss tt";
DateTime parsedDateTime = DateTime.ParseExact(s, format, null);
string output = parsedDateTime.ToString("d/MM/yy"); //output = 1/09/17
More info:
DateTime.ParseExact method
DateTime.ToString method
My suggestion would be to use the inbuilt date datatype.
If that doesn't go with your requirement then I would suggest you to split the string based on the delimiter " "(blank space). Then pick the first part and proceed with your code.
You could use a substring like this
string s = "30/09/2017 12:00:00 AM";
string[] values = s.Split('/');
string a = values[0] + "/" + values[1] + "/" + values[2].Substring(2,2);
Adding to Paolo's anwer
string s = "1/09/2017 12:00:00 AM";
string format = "d/MM/yyyy hh:mm:ss tt";
DateTime parsedDateTime = DateTime.ParseExact(s, format, null);
string output = parsedDateTime.ToString("d/MM/yy");
string ss = output.Replace("-","/");
Console.Write(ss); //output is 1/09/17
This will exactly return the exact expected output
DateTime date = DateTime.ParseExact("1/09/2017 12:00:00 AM", "d/MM/yyyy hh:mm:ss tt", null);
Console.WriteLine(date.ToString("d/MM/yy"));
Convert your date string to DateTime and then use ToString overloaded method method with parameter Format Please find Fiddle

Parse String date to specific format

This is a String date:
dob = reader.GetValue(7).ToString();` return like "12/2/2012"
But I want to convert (before passing it) to this format "2012212", I have tried
string newDate = dob.ToString("yyyMMdd")
But I got the following error:
The best overloaded method match for
'string.ToString(System.IFormatProvider)has some invalid arguments
any idea ?
Not Exact way of getting output but it will work.
string dob = "12/2/2012";
string[] d1 = dob.Split('/');
string s = d1[2] + d1[1] + d1[0];
You could use SqlDataReader.GetDateTime if underlying return type is DateTime
Then you just need..
reader.GetDateTime(7).ToString("yyyyMdd");
In case, if it is stored and received as a string then I would suggest converting to DateTime first and then look for specific format.
var date = DateTime.ParseExact(dob, "dd/M/yyyy",CultureInfo.InvariantCulture);
var formattedDate = date.ToString("yyyyMdd");
DateTime.ParseExact(reader.GetValue(7), "dd/M/dd", System.Globalization.CultureInfo.InvariantCulture).ToString("yyyyMMdd");
If you have a date in a String with the format "ddMMyyyy" and want to convert it to "yyyyMMdd" you could do like this:
DateTime dt = DateTime.ParseExact(dob, "ddMMyyyy",
CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");
You can try below method to convert string to date.
IFormatProvider culture = new CultureInfo("en-US", true);
dob = DateTime.ParseExact(reader.GetValue(7).ToString(), "dd/MM/yyyy", culture).ToString("yyyyMMdd");
Thank you.

parse date in mm_dd_yyyy format

I need to parse date in the following format.
mm_dd_yyyy
I know I can do like this
var dateString = "20050802";
var date = myDate = DateTime.ParseExact(dateString,
"yyyyMMdd",
System.Globalization.CultureInfo.InvariantCulture);
and then replace the -with underscore character.
But is there any other way around to do the same?
So, what's the problem?
Just make appropriate format string: MM_dd_yyyy.
var dateTime = DateTime.ParseExact("08_02_2005", "MM_dd_yyyy", CultureInfo.InvariantCulture); // from string to DateTime
var s = dateTime.ToString("MM_dd_yyyy"); // from DateTime to string

Converting a date string in C#

I have a date string with the format "dd.MM.yyyy" (eg. "01.02.2004") and want to convert it to "yyyy-MM-dd" with String.Format(...) or DateTime.ParseExact(...) or whatelse.
Actually I only get exceptions. So the usage of the following code doesn't work:
String dateString = "01.02.2004";
datestring = String.Format("{yyyy-MM-dd}", dateString);
What is wrong with that? Is there an alternative with DateTime.ParseExact(..)?
You need to parse it into a DateTime, then call ToString() with a different format:
DateTime date = DateTime.ParseExact(dateString, "dd.MM.yyyy", CultureInfo.InvariantCulture);
date.ToString("yyyy-MM-dd")
You need to create a Datetime object first.
try something like:
DateTime t = DateTime.parse("01.02.2004");
String result = t.ToString("{yyyy-MM-dd}", CultureInfo.InvariantCulture);
You have to convert it to a DateTime first with an appropriate CultureInfo:
String dateString = "01.02.2004";
var deCulture = System.Globalization.CultureInfo.CreateSpecificCulture("de-DE");
DateTime dt = DateTime.Parse(dateString, deCulture);
dateString = dt.ToString("yyyy-MM-dd");
Demo
String dateString = "01.02.2004";
dateString = DateTime.ParseExact(dateString, "dd.MM.yyyy", CultureInfo.InvariantCulture)
.ToString("yyyy-MM-dd");
What's wrong with your attempt is:
When using a format string, the items need to be listed in a format like {0:yyyy-MM-dd}. The 0: is necessary.
When you're using string.Format(), the variable is a string, so the format string yyyy-MM-dd has no meaning there.
You're parsing a string as argument to String.Format? What do you expect out of it?
You should do something like this:
try
{
var date = DateTme.ParseExact("yyyy.MM.dd", dateString, CultureInfo.InvariantCulture);
var result = date.ToString("yyyy-MM-dd");
}
catch(Exception e) { /* ... */}

Categories