Converting MMDDYYYY to 01-JAN-YY - c#

I have a string in the format in = "01012012". I want it to convert to: 01-JAN-12. How do I achieve it in C#?

DateTime dateTime = DateTime.ParseExact("01012012", "MMddyyyy", CultureInfo.InvariantCulture);
string newDateString = dateTime.ToString("dd-MMM-yy");
EDIT: Changed output to 2 digit date (instead of 4)

Got my answer:
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime date = DateTime.ParseExact("08312012", "MMddyyyy", provider);
string getDate = date.ToString("dd-MMM-yy");
Thanks guys!!!

Related

DateTime format conversion mm/dd/yyyy to yyyy/mm/dd

Can someone please let me know how do I convert this datetime format into yyyyMMdd
2/28/2017 12:02:04 AM
At the output I should get 20170228
Any advice on this?
If you already have the DateTime as an object
string formattedDate = date.ToString("yyyyMMdd");
If you need to parse the value first.
string dateValue = "2/28/2017 12:02:04 AM";
string format = "M/d/yyyy hh:mm:ss tt";
DateTime dateTime = DateTime.ParseExact(dateValue, format,
System.Globalization.CultureInfo.InvariantCulture);
For reference you can find a breakdown of the Custom Date and Time Format Strings
You need to specify the format of the date.
If you want it for the current time you can try like this :
string dtime = DateTime.Now.ToString("yyyy/MM/dd");
This is the solution I have come up with for you:
string format = "M/d/yyyy hh:mm:ss tt";
string dateString = "2/28/2017 12:02:04 AM";
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime date = DateTime.ParseExact(dateString, format, provider);
string output = date.ToString("yyyyMMdd");
If you're using C# 6 or later (VS2015), you can format DateTime objects easily by using string interpolation using a custom format string. The custom format string that you're looking for is "yyyyMMdd".
// create your preferred date and time in a new DateTime struct
DateTime yourDateTime = new DateTime(2017, 2, 28, 0, 2, 4);
// format yourDateTime as a string
string yourFormattedDateTime = $"{yourDateTime:yyyyMMdd}";
You can read more about interpolated strings at https://msdn.microsoft.com/en-us/library/dn961160.aspx, and, as previously mentioned by #Adam Carr, you can find more information on custom date and time format strings at https://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.110).aspx

How to convert string to datetime(datetime) in same format?

Here I want to convert date into string using tostring but when I convert it back, (string to datetime), the format is different.
static void Main(string[] args)
{
string cc = "2014/12/2";
DateTime dt = DateTime.Parse(cc);
Console.WriteLine(dt);
Console.ReadLine();
}
expected output:
2014/12/2
But I get:
12/2/2014
string DateString = "06/20/1990";
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime dateVal = DateTime.ParseExact(DateString, "yyyy-MM-dd", culture);
This will be your desire output
udpated
string DateString = "20/06/1990";;
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime dt = DateTime.ParseExact(DateString,"dd/mm/yyyy",culture);
dt.ToString("yyyy-MM-dd");
Call ToString with format provided when you convert DateTime instance back to string:
Console.WriteLine(dt.ToString(#"yyyy/M/d");
try this
DateTime dt = DateTime.ParseExact(dateString, "ddMMyyyy",
CultureInfo.InvariantCulture);
dt.ToString("yyyyMMdd");
use this:
string cc = "2014/12/2";
DateTime dt = DateTime.Parse(cc);
string str = dt.ToString("yyyy/M/dd"); // 2014/12/02 as you wanted
Console.WriteLine(str);
Console.ReadLine();
As you can read here, DateTime.ToString() uses CurrentCulture to decide how to format its output (CurrentCulture of type CultureInfo provides information on how to format dates, currency, calendar etc. It is called locale in C++).
Thus, the simlplest solution as suggested by previous answers, is to use an overload of ToString() which accepts a format string, effectively overriding the CurrentCulture info:
dt.ToString(#"yyyy/MM/dd");
More on datetime formatting can be found here.
you can use
string formattedDate= dt.ToString("yyyy/M/d");
For reverse you can use
DateTime newDate = DateTime.ParseExact("2014/05/22", "yyyy/M/d", null);
So if your expected output is like : 2014/12/2
you have to use
newDate.ToString("yyyy/M/d");
This is simple, You just need to use date pattern during display
string cc = "2014/12/2";
string datePatt = #"yyyy/MM/d";
DateTime dt = Convert.ToDateTime(cc);
Console.WriteLine(dt.ToString(datePatt));

C# string to SqlDateTime: how to set format for recognition?

I need to use
SqlDateTime.Parse(val)
where val is a string such as " 23.3.1992 00:00:00 ".
The string is in European format, that is, day precedes month. However Parse wants "American" format. How I can tell it to use particular datetime format / locale?
Thanks in advance!
Try this:
string val = "23.12.1992 00:00:00";
// Parse exactly from your input string to the native date format.
DateTime dt = DateTime.ParseExact(val, "dd.M.yyyy hh:mm:ss", null);
// Part to SqlDateTime then
System.Data.SqlTypes.SqlDateTime dtSql = System.Data.SqlTypes.SqlDateTime.Parse(dt.ToString("yyyy/MM/dd"));
This could be done in one statement, but just separated for illustration.
Have you tried DateTime instead of SQLDateTime
DateTime d = DateTime.Parse(val);
String s = d.ToString(CultureInfo.CreateSpecificCulture("en-US"));
Can you try this ?
string valInEuropean = "23.3.1992 00:00:00";
DateTime dateInEuropean = DateTime.Parse(valInEuropean);
string valInAmerican = dateInEuropean.ToString("yyyy-MM-dd HH:mm:ww");
For converting a string to datetime object when the format is known(in this case )
use
DateTime dwweek = DateTime.ParseExact("23.3.1992 00:00:00", "dd.MM.yyyy hh:mm:ss", System.Globalization.CultureInfo.InvariantCulture);

How to convert any date format to yyyy-MM-dd

My app parses a string data, extracts the date and identify the format of the date and convert it to yyyy-MM-dd.
The source date could be anything lime dd-mm-yyyy, dd/mm/yyyy, mm-dd-yyyy, mm/dd/yyyy or even yyyy-MM-dd.
Other than attempting different permutations and combinations using switch case, is there any other efficient way to do it?
string sourceDate = "31-08-2012";
String.Format("{0:yyyy-MM-dd}", sourceDate);
The above code simply returns the same sourceDate "31-08-2012".
string DateString = "11/12/2009";
IFormatProvider culture = new CultureInfo("en-US", true);
DateTime dateVal = DateTime.ParseExact(DateString, "yyyy-MM-dd", culture);
These Links might also Help you
DateTime.ToString() Patterns
String Format for DateTime [C#]
Convert your string to DateTime and then use DateTime.ToString("yyyy-MM-dd");
DateTime temp = DateTime.ParseExact(sourceDate, "dd-MM-yyyy", CultureInfo.InvariantCulture);
string str = temp.ToString("yyyy-MM-dd");
string sourceDateText = "31-08-2012";
DateTime sourceDate = DateTime.Parse(sourceDateText, "dd-MM-yyyy")
string formatted = sourceDate.ToString("yyyy-MM-dd");
You can write your possible date formats in array and parse date as following:
public static void Main(string[] args)
{
string dd = "12/31/2015"; //or 31/12/2015
DateTime startDate;
string[] formats = { "dd/MM/yyyy", "dd/M/yyyy", "d/M/yyyy", "d/MM/yyyy",
"dd/MM/yy", "dd/M/yy", "d/M/yy", "d/MM/yy", "MM/dd/yyyy"};
DateTime.TryParseExact(dd, formats,
System.Globalization.CultureInfo.InvariantCulture,
System.Globalization.DateTimeStyles.None, out startDate);
Console.WriteLine(startDate.ToString("yyyy-MM-dd"));
}
You can change your Date Format From dd/MM/yyyy to yyyy-MM-dd in following way:
string date = DateTime.ParseExact(SourceDate, "dd/MM/yyyy", CultureInfo.InvariantCulture).ToString("yyyy-MM-dd");
Here, SourceDate is variable in which you will get selected date.
You will need to parse the input to a DateTime object and then convert it to any text format you want.
If you are not sure what format you will get, you can restrict the user to a fixed format by using validation or datetimePicker, or some other component.
This is your primary problem:
The source date could be anything like dd-mm-yyyy, dd/mm/yyyy,
mm-dd-yyyy, mm/dd/yyyy or even yyyy-MM-dd.
If you're given 01/02/2013, is it Jan 2 or Feb 1? You should solve this problem first and parsing the input will be much easier.
I suggest you take a step back and explore what you are trying to solve in more detail.
Try this code:
lblUDate.Text = DateTime.Parse(ds.Tables[0].Rows[0]["AppMstRealPaidTime"].ToString()).ToString("yyyy-MM-dd");
if (DateTime.TryParse(datetoparser, out dateValue))
{
string formatedDate = dateValue.ToString("yyyy-MM-dd");
}
string sourceDate = "15/06/2021T00.00.00";
DateTime Date = DateTime.Parse(sourceDate)
string date = Date.ToString("yyyy-MM-dd");
Convert.toDateTime(sourceDate).toString("yyyy-MM-dd");
Convert.ToDateTime((string)item["LeaveFromDate"]).ToString("dd/MM/yyyy")
This might be helpful

Convert a string (format: yyyyymmddhhmmss) to datetime [duplicate]

This question already has answers here:
Closed 11 years ago.
Possible Duplicate:
How to convert string with unusual format into datetime
How can I convert a string to DateTime in c#? example:
string s = "20070406000000";
How can I convert that string into a DateTime?
Use the ParseExact or TryParseExact method:
DateTime t = DateTime.ParseExact("20070406000000", "yyyyMMddHHmmss", CultureInfo.InvariantCulture);
This CodeProject article explains how to do this.
String MyString = "1999-09-01 21:34 PM";
DateTime MyDateTime = DateTime.ParseExact(MyString, "yyyy-MM-dd HH:mm tt", CultureInfo.InvariantCulture);
Use DateTime.ParseExact()
CultureInfo provider = CultureInfo.InvariantCulture;
var date = DateTime.ParseExact(theDateString, "yyyyMMddHHmmss", provider);
You will need to use the DateTime.ParseExact function to tell it what the format of the string is so it knows how to convert it.
string strDate = "20070406000000";
string strDateTimeFormat = "yyyyMMddHHmmss";
DateTime objDate = DateTime.ParseExact(strDate, strDateTimeFormat, DateTimeFormatInfo.InvariantInfo);

Categories

Resources