Convert ShortTime string to DateTime format - c#

DateTime time = DateTime.Now;
string newTime = time.ToShortTime();
How to convert this newTime string into DateTime format

Please try with the below code snippet.
DateTime time = DateTime.Now;
string newTime = time.ToShortTimeString();
DateTime dt = new DateTime();
DateTime.TryParse(newTime,out dt);
Note : It will set current Date.

Finaly I found an answer
const string FMT = "O";
DateTime now1 = DateTime.Now;
string strDate = now1.ToString(FMT);
DateTime now2 = DateTime.ParseExact(strDate, FMT, CultureInfo.InvariantCulture);

Related

How to extract YYYY-mm-dd from date string?

I have date in format 2017-08-24 22:22:45. How to extract only 2017-08-24?
I tried to use:
var data = date.Split('-');
string convertedDate = data[0] + date[1] + date[2];
But I dislike this solution/
DateTime s = DateTime.Parse("2017-08-24 22:22:45");
Console.WriteLine(s.ToString("yyyy-MM-dd"));
More datetime .ToString() formats
https://blog.nicholasrogoff.com/2012/05/05/c-datetime-tostring-formats-quick-reference/
Other option could be:
string date = "2017-08-24 22:22:45";
string convertedDate = date.Split(' ')[0];
// Result: 2017-08-24
if Date:
string convertedDate = date.ToString("yyyy-MM-dd");
if String:
string convertedDate = data.Substring(0,10);
Simply:
var convertedDate = date.Substring(0, 10);
Your string can be converted into a DateTime object then you can use however you want.
string dateStr = "2017-08-24 22:22:45";
DateTime date = DateTime.Now;
if(DateTime.TryParse(dateStr, out date))
Console.Write(date.ToString("yyyy-MM-dd"));
Using ParseExact
var strDate = "2017-08-24 22:22:45";
DateTime myDate = DateTime.ParseExact(strDate, "yyyy-MM-dd HH:mm:ss",
System.Globalization.CultureInfo.InvariantCulture);
Console.WriteLine("Your date "+ myDate.ToString("yyyy-MM-dd"));
https://msdn.microsoft.com/en-us/library/w2sa9yss(v=vs.110).aspx
You could use a Regular Expression pattern:
var src = "2017-08-24 22:22:45";
var pattern = #"^\d{4}-\d{2}-\d{2}";
var ans = Regex.Match(src, pattern).Value;
But that is probably overkill - just extract it:
var ans = src.Substring(0, 10);
This works for you,
string date = "2017-08-24 22:22:45";
string convertedDate = date.Split(' ')[0];

Convert DateTime in C#

I'm trying to convert the DateTime in UTC format to a locale of my choice.
For example, 08.09.2016 17:34:33Z should convert to 08.09.2016 11:34:33 if the locale is set to es-CL.
My code:
public static void Main(string[] args)
{
CultureInfo en = new CultureInfo("es-CL");
Thread.CurrentThread.CurrentCulture = en;
// Creates a DateTime for the local time.
string activityTime = "08.09.2016 17:34:33Z";
DateTime dt = DateTime.Parse(activityTime);
// Converts the local DateTime to the UTC time.
DateTime utcdt = dt.ToUniversalTime();
Console.WriteLine("utc time: " + utcdt.ToString());
// Defines a custom string format to display the DateTime value.
// zzzz specifies the full time zone offset.
String format = "dd/MM/yyyy hh:mm:sszzz";
// Converts the local DateTime to a string
String str = dt.ToString(format);
Console.WriteLine(str);
// Converts the UTC DateTime to a string
String utcstr = utcdt.ToString(format);
Console.WriteLine(utcstr);
// Converts the string back to a local DateTime and displays it.
DateTime parsedBack = DateTime.ParseExact(str,format,en.DateTimeFormat);
Console.WriteLine("local time: " + parsedBack);
DateTime parsedBackUTC = DateTime.ParseExact(str,format, en.DateTimeFormat, DateTimeStyles.AdjustToUniversal);
Console.WriteLine(parsedBackUTC);
}
My output:
utc time: 08-09-2016 17:34:33
08-09-2016 07:34:33+02:00
08-09-2016 05:34:33+02:00
local time: 08-09-2016 7:34:33
08-09-2016 5:34:33
What am I doing incorrectly?

Convert.ToDateTime in Java

Here's my code in c#.
DateTime gmtTime = Convert.ToDateTime(string.Format("{0} {1}", day[1], day[2])).Add(Convert.ToDateTime(time).TimeOfDay);
What I've tried in Java.
String month = "Jul";
String day = "22";
String gmtTime = String.format("%s %s", month, day);
DateFormat df = new SimpleDateFormat("MMM dd");
Date gmtDate = df.parse (gmtTime);
The result I'm getting into Java is July 22, 1970. How can I get the current year just like in C# when I convert a String to DateTime the year is the current year. Is possible to have a code just like what I've tried in my c# code to transfer it to Java?
Hoping to get a good result. Thanks
Calendar cal=Calendar.getInstance();
int year=cal.get(Calendar.YEAR);
System.out.println(year);
Will give the current year
Change these lines:
String gmtTime = String.format("%s %s", month, day);
DateFormat df = new SimpleDateFormat("MMM dd");
To this:
String gmtTime = String.format("%s %s %s", month, day, Calendar.getInstance().get(Calendar.YEAR));
DateFormat df = new SimpleDateFormat("MMM dd yyyy");
Try adding year to your Java SimpledateFormat, see the formats used here http://docs.oracle.com/javase/6/docs/api/java/text/SimpleDateFormat.html#year
DateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy");
final Date currentTime = new Date();
final SimpleDateFormat sdf = new SimpleDateFormat("MMM d, yyyy hh:mm:ss a z");
// Set time zone
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println("Current Time: " + sdf.format(currentTime));
Here simply formatting current date-
final DateFormat reportDateFormat = new SimpleDateFormat("MM/dd/yyyy", Locale.ENGLISH);
Date date = new Date();
String dateString = reportDateFormat.format(date);
System.out.println(dateString);

date validation hotel reservation

hi iam creating a hotel reservation form and wanted to calculate total cost of stay by the nights stayed. it requires an arrival date and departure date but i want to add a validation so if the user inputs an incorrect format a message box displays asking them to try again. here is my code already had a bit of help with converting the timespan so once again any help would be amazing. the error is on the line that begins "dateDiff = aDate" and it says the variables aDate and dDate are unassigned thanks in advance:
String arrival, departure;
arrival = textBox1.Text;
departure = textBox2.Text;
DateTime aDate, dDate;
try
{
aDate = DateTime.ParseExact(arrival, "dd/mm/yyyy", null);
dDate = DateTime.ParseExact(departure, "dd/mm/yyyy", null);
return;
}
catch
{
MessageBox.Show("Invalid input format please enter in format DD/MM/YYYY");
}
TimeSpan dateDiff;
dateDiff = dDate.Subtract(aDate);
int nights = (int)dateDiff.TotalDays;
textBox3.Text = ("" + nights);
textBox5.Text = ("£" + (nights * 115));
The reason for the compiler warning is that you haven't assigned a value to your local DateTime fields. Local variables are not initialized with a default value, hence you must do it manually before you can use them. Since you assign the value in a Try/Catch it's not ensured that they will ever get one.
Instead you could use DateTime.TryParseExact:
DateTime aDate, dDate;
if( DateTime.TryParseExact(arrival, "dd/mm/yyyy", null, DateTimeStyles.None, out aDate)
&& DateTime.TryParseExact(departure, "dd/mm/yyyy", null, DateTimeStyles.None, out dDate))
{
// ...
}
else{
MessageBox.Show("Invalid input format please enter in format DD/MM/YYYY");
}
Your code it continuing after your catch. Place the code using the dates within your try-block.
String arrival, departure;
arrival = textBox1.Text;
departure = textBox2.Text;
DateTime aDate, dDate;
try
{
aDate = DateTime.ParseExact(arrival, "dd/mm/yyyy", null);
dDate = DateTime.ParseExact(departure, "dd/mm/yyyy", null);
TimeSpan dateDiff;
dateDiff = dDate.Subtract(aDate);
int nights = (int)dateDiff.TotalDays;
textBox3.Text = ("" + nights);
textBox5.Text = ("£" + (nights * 115));
}
catch
{
MessageBox.Show("Invalid input format please enter in format DD/MM/YYYY");
}
And don't return if they parse successfully, or you'll have no result when your input does validate.
Alternatively, place the return in your catch-block, so that execution is stopped on failure.
Your code should be
String arrival, departure;
arrival = textBox1.Text;
departure = textBox2.Text;
DateTime aDate, dDate;
try
{
aDate = DateTime.ParseExact(arrival, "dd/mm/yyyy", null);
dDate = DateTime.ParseExact(departure, "dd/mm/yyyy", null);
TimeSpan dateDiff;
dateDiff = dDate.Subtract(aDate);
int nights = (int)dateDiff.TotalDays;
textBox3.Text = ("" + nights);
textBox5.Text = ("£" + (nights * 115));
}
catch
{
MessageBox.Show("Invalid input format please enter in format DD/MM/YYYY");
return;
}
Use dateTimePicker control you don't need to Parse
Assign some default values to your aDate, dDate, and the error will go away. The reason is that compiler can't determine if they will be assigned values for sure in the try block. You can do
DateTime aDate = default(DateTime);
DateTime dDate = default(DateTime);
BUT
instead of using try-catch to validate date, its better if you use DateTime.TryParseExact
DateTime aDate, dDate;
if (DateTime.TryParseExact(arrival,
"dd/MM/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.NoCurrentDateDefault,
out aDate))
{
MessageBox.Show("Invalid input format please enter in format DD/MM/YYYY");
}
So your complete code should be:
String arrival, departure;
arrival = textBox1.Text;
departure = textBox2.Text;
DateTime aDate, dDate;
if (DateTime.TryParseExact(arrival,
"dd/MM/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.NoCurrentDateDefault,
out aDate))
{
MessageBox.Show("Invalid input format for Arrival Date - please enter in format DD/MM/YYYY");
}
if (DateTime.TryParseExact(departure,
"dd/MM/yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.NoCurrentDateDefault,
out dDate))
{
MessageBox.Show("Invalid input format for Departure Date - please enter in format DD/MM/YYYY");
}
TimeSpan dateDiff;
dateDiff = dDate.Subtract(aDate);
int nights = (int)dateDiff.TotalDays;
textBox3.Text = ("" + nights);
textBox5.Text = ("£" + (nights * 115));

convert datetime to date format dd/mm/yyyy

I have a DateTime object 2/19/2011 12:00:00 AM. I want to convert this object to a string 19/2/2011.
Please help me to convert DateTime to string format.
DateTime dt = DateTime.ParseExact(yourObject.ToString(), "MM/dd/yyyy hh:mm:ss tt", CultureInfo.InvariantCulture);
string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture);
First of all, you don't convert a DateTime object to some format, you display it in some format.
Given an instance of a DateTime object, you can get a formatted string in that way like this:
DateTime date = new DateTime(2011, 2, 19);
string formatted = date.ToString("dd/M/yyyy");
As everyone else said, but remember CultureInfo.InvariantCulture!
string s = dt.ToString("dd/M/yyyy", CultureInfo.InvariantCulture)
OR escape the '/'.
You have to pass the CultureInfo to get the result with slash(/)
DateTime.Now.ToString("dd/MM/yyyy", CultureInfo.InvariantCulture)
DateTime.ToString("dd/MM/yyyy") may give the date in dd-MM-yyyy format. This depends on your short date format. If short date format is not as per format, we have to replace character '-' with '/' as below:
date = DateTime.Now.ToString("dd/MM/yyyy").Replace('-','/');
It's simple--tostring() accepts a parameter with this format...
DateTime.ToString("dd/MM/yyyy");
Here is a method, that takes datetime(format:01-01-2012 12:00:00) and returns string(format: 01-01-2012)
public static string GetDateFromDateTime(DateTime datevalue){
return datevalue.ToShortDateString();
}
You can use the ToString() method, if you want a string representation of your date, with the correct formatting.
Like:
DateTime date = new DateTime(2011, 02, 19);
string strDate = date.ToString("dd/MM/yyyy");
In C# 10 you can use DateOnly.
DateOnly date = new(2011, 02, 19);
string output = date.ToString("dd/M/yyyy", CultureInfo.InvariantCulture);
If you want the string use -
DateTime.ToString("dd/MM/yyyy")
On my login form I am showing the current time on a label.
public FrmLogin()
{
InitializeComponent();
lblTime.Text = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt");
}
private void tmrTime_Tick(object sender, EventArgs e)
{
lblHora.Text = DateTime.Now.ToString("dd/MM/yyyy hh:mm:ss tt");
}
string currentdatetime = DateTime.Now.ToString("dd'/'MM'/'yyyy");
DateTime.Parse(YOUR_DATE_OBJECT).ToShortDateString();
ToShortDateString() method will help you convert DateTime To Just Date String,format dd/mm/yyyy.
This works for me:
string dateTimeString = "21‎-‎10‎-‎2014‎ ‎15‎:‎40‎:‎30";
dateTimeString = Regex.Replace(dateTimeString, #"[^\u0000-\u007F]", string.Empty);
string inputFormat = "dd-MM-yyyy HH:mm:ss";
string outputFormat = "yyyy-MM-dd HH:mm:ss";
var dateTime = DateTime.ParseExact(dateTimeString, inputFormat, CultureInfo.InvariantCulture);
string output = dateTime.ToString(outputFormat);
Console.WriteLine(output);
this is you need and all people
string date = textBox1.Text;
DateTime date2 = Convert.ToDateTime(date);
var date3 = date2.Date;
var D = date3.Day;
var M = date3.Month;
var y = date3.Year;
string monthStr = M.ToString("00");
string date4 = D.ToString() + "/" + monthStr.ToString() + "/" + y.ToString();
textBox1.Text = date4;

Categories