C# date AddDays output - c#

I have following code:
string date = "13.04.2012";
string date2 = (DateTime.Parse(date).AddDays(1)).ToString();
This is working correctly without a problem but after the DateTime.Parse function the variable date2 is '14.04.2012 00:00:00' but i would like to have only the date '14.04.2012' without the timestamp.
I thought about using the substring function like this:
string sub = date2.Substring(0, 10);
That would work like this but isn't there a better way to get that result?

try this
string date = "13.04.2012";
string date2 = (DateTime.Parse(date).AddDays(1)).ToShortDateString();

DateTime.Parse returns a DateTime value, which is not really a string so it's wrong to say that it has the value '14.04.2012 00:00:00'.
What you need to do here is add a format parameter to the ToString call, or use one of the convenience formatting methods.

DateTime.ToString(string format)

Try DateTime.Date property. May be it will be correct for this. See the below code part
DateTime dateOnly = date1.Date;
and out put will be
// 6/1/2008
EDIT:
or simply you can try
DateTime.ToString("dd.MM.yyyy");

I think you are after formatting
System.DateTime now = System.DateTime.Now;
System.DateTime newDate = now.AddDays(36);
System.Console.WriteLine("{0:dd.mm.yyyy}", newDate);

Related

Remove time from time and date

I have a variable openDate which holds date and time, and I would like to strip just the date. I tried the below example and it is not working. What am I doing wrong, or rather how should I do it because the variable openDate remains the same even after trying to strip just the date? The value of openDate is "2012-03-08 00:00:00"
openDate = ! string.IsNullOrEmpty(node.ChildNodes[f].Attributes["ows_PMO_x0020_Origination_x0020_Date"].Value)
? node.ChildNodes[f].Attributes["ows_PMO_x0020_Origination_x0020_Date"].Value
: "" ;
openDate = String.Format("{0:MM/dd/yyyy}", openDate);
considering openDate is of a String type, i would do this
var dt = DateTime.Parse(openDate).ToString("MM/dd/yyyy");
From your code it is clear that openDate is of type string and you have value that is a string representation of DateTime, you can apply DateTime formatting on string values.
You have multiple options.
Convert string openDate to a DateTime value and then apply formatting
Do some string operations to extract the date part from your string value.
String operations:
string openDate = "2012-03-08 00:00:00";
string formatted = openDate.Substring(0, openDate.IndexOf(' '));
DateTime Parsing.
DateTime parsedDateTime = DateTime.Parse(openDate);
string formattedDateTime = parsedDateTime.ToString("MM/dd/yyyy", CultureInfo.InvariantCulture);
You need to convert your date into a DateTime object first. See examples here if your string is in a different or custom format.
openDate = !string.IsNullOrEmpty(node.ChildNodes[f].Attributes["ows_PMO_x0020_Origination_x0020_Date"].Value)? node.ChildNodes[f].Attributes["ows_PMO_x0020_Origination_x0020_Date"].Value: "" ;
//openDate is a string at this point. You'll need to convert it to a datetime object first, for the following line to work:
var dtObject = DateTime.Parse(openDate);
//Format the newly created datetime object
openDate = String.Format("{0:MM/dd/yyyy}", dtObject);
You can format datetime using:
If it is a datetime:
OpenDate = OpenDate.ToString("yyyy-mm-dd");
If the datatype is not datetime and you are sure the format will always be that then you can always convcert the string to datetime and use the method described above.
Convert.ToDateTime(openDate).ToString("yyyy-mm-dd");
The answers are great, especially if you would like to control the format of your 'time' part. Here is teh simplest way to get what you are after:
var dt = Convert.ToDateTime("2012-03-08 00:00:04");
Console.WriteLine(dt.ToLongTimeString());
Console.WriteLine(dt.TimeOfDay);
Output:
Use the following - openDate = openDate.Date

DateTime.Parse Not Parsing

I'm trying to return the date as "2015-06-18"
string strDate = DateTime.Now.ToString("yyyy-MM-dd");
DateTime newDate = DateTime.Parse(strDate);
This returns "2015/06/18 hh:mm:ss"
What am I missing?
If you want a particular output format, you can specify one yourself.
string strDate = DateTime.Now.ToString("yyyy-MM-dd");
DateTime newDate = DateTime.Parse(strDate);
string output = newDate.ToString("yyyy-MM-dd");
Console.WriteLine (output); // produces 2015-06-18 right now
The DateTime structure in .net always includes the time of day, and there is no built-in way to store only a date, so if you want to exclude it, you'll need to use the formatting options.
What you need is to format the datetime object.
newDate.ToString("yyyy-MM-dd") -> 2015-06-19
Why don't you just use the DateTime.Date property?
DateTime date1 = DateTime.Now;
Console.WriteLine(date1.ToString());
// Get date-only portion of date, without its time.
DateTime dateOnly = date1.Date;
// Display date using short date string.
Console.WriteLine(dateOnly.ToString("yyyy-MM-dd"));

String was not recognized as a valid DateTime during insert

I get the following error when i try to convert to date time.
String was not recognized as a valid DateTime.
cost.b_date = DateTime.Parse(c_date.Text) ;//c_date.Text = 12/28/2012
Then i try
string date = string.Format("{0:yyyy-MM-dd}",c_date.Text);
cost.b_date = DateTime.Parse(date) ;
but i get the same exception how to fix this problem.
Using string.Format when the input is a string is pointless.
If you know the format of the string, you should use DateTime.ParseExact or DateTime.TryParseExact. For example, for the string you've got, you could use:
DateTime date = DateTime.ParseExact(text, "MM/dd/yyyy",
CultureInfo.InvariantCulture);
You should consider:
Is this user input? If so, use TryParseExact to detect user error more easily without an exception.
Do you definitely know the exact format? If not, using DateTime.TryParse may be more appropriate.
Do you definitely know the culture? If it's not the culture of the current thread, you should specify it explicitly.
Do you have to get the value as text to start with? If you could use an alternative form of input which gives you the value as a DateTime to start with, that would be preferable.
CultureInfo provider = CultureInfo.InvariantCulture;
DateTime result = DateTime.ParseExact(c_date.Text, "d", provider);
Try using DateTime.ParseExact.
DateTime date = DateTime.ParseExact(c_date.Text, "yyyy/MM/dd", null);

Convert datetime to date using c#

I have datetime like:
01-Jan-10 12:00:00 AM I want to get only 01-Jan-10.I do not know how to convert it. Anyone know help me please, Thanks,
If you have a DateTime object and want to get the string in that format, use myDateTime.ToString("dd-MMM-yy"). If you have a DateTime object and want to return a new DateTime object that is just the date component, use DateTime.Date.
Like this:
DateTime dt = DateTime.Today; //or whatever
string dateString = dt.ToShortDateString();
You can also use ToString() to format it however you like. In your case, it would be:
string dateString = dt.ToString("dd-MMM-YY");
use method DateTime.ToShortDateString(); or DateTime.ToLongDateString()

How to get today's date in mm/dd/yyyy format into a datetime variable in c#

I want today's date in mm/dd/yyyy format from a DateTime variable. How to get it?
I need to check this with some date variable so it must be also in date variable format?plz help
Ex: i need to get today date in mm/dd/yyyy format and i already date which is datetime datatype in mm/dd/yyyy format and i have to compare them
You should use DateTime.Today:
DateTime today = DateTime.Today; // As DateTime
string s_today = today.ToString("MM/dd/yyyy"); // As String
Edit: You edited your post to add another question, so here comes my edit to supply at least some sort of answer.
Update While you can use DateTime.Compare() you should use plain comparisson:
if(today < otherdate)
{
// Do something.
}
Alternatively, you can use DateTime-variables to check against other DateTime-variables using the DateTime.Compare() method. Both otpions will work and it comes down to preference and what you want to do with the result.
int result = DateTime.Compare(today, otherdate);
if(result < 0)
MessageBox.Show("Today is earlier than the 'otherdate'");
elseif(result > 0)
MessageBox.Show("Today is later than the 'other date'");
else
MessageBox.Show("Dates are equal...");
string datestring = DateTime.Now.ToString("MM/dd/yyyy");
MSDN say: Custom Date and Time Format Strings
To convert DateTime variable to string in the specified format:
DateTime d = ...;
string s = d.ToString("MM/dd/yyyy");
If you want to compare only date part of DateTime, not time part:
DateTime d1 = DateTime.Parse("10/10/2011");
DateTime d2 = DateTime.Parse("01/01/2011");
if (d1.Date > d2.Date)
{
// do the stuff
}
DateTime.Now.ToString("MM/dd/yyyy");
DateTime.Today.ToString("MM/dd/yyyy");
DateTime.Parse is what you are looking for...

Categories