Solved

make time out of string

Posted on 2014-01-09
9
228 Views
Last Modified: 2014-01-13
I have a database filled with 24 hr clock times in string format.
9:00  12:13  17:42  you get the picture.
Is there an easy way to get the time between 9:00 and 17:42
I can think of ways to split the string around the colon and then figure the elapsed time, but is there and easy way of doing it?  Obviously one can't subtract, because of the silly 60 minutes.

suggestions?

gary
0
Comment
Question by:javagair
  • 5
  • 4
9 Comments
 
LVL 24

Expert Comment

by:chaau
ID: 39769913
How about using System.DateTime for both times, and then subtract them. The Result will be a System.TimeSpan.

Here is a small example:
String dateStub = "2014-01-01 "
String strtime1 = "9:00"
String strtime2 = "17:00"
DateTime time1 = DateTime.ParseExact(dateStub + strtime1, "yyyy-MM-dd hh:mm", enUS, DateTimeStyles.None)
DateTime time2 = DateTime.ParseExact(dateStub + strtime2, "yyyy-MM-dd hh:mm", enUS, DateTimeStyles.None)
TimeSpan diff = time2 - time1
' then use diff.Hours and diff.Minutes to get the time difference

Open in new window

0
 

Author Comment

by:javagair
ID: 39772090
so you are just adding a random date to the time and then using the timespan to look only at the times?
good thinking I will try it

thanks

gary
0
 

Author Comment

by:javagair
ID: 39772179
the enUs is giving me a problem
imported systems.globalization which gave me the DateTimeStyles but enUS still has an error

gary
0
 
LVL 24

Expert Comment

by:chaau
ID: 39772544
You can use null in place of enUS, like this:
DateTime time2 = DateTime.ParseExact(dateStub + strtime2, "yyyy-MM-dd hh:mm", null, DateTimeStyles.None)

Open in new window

0
Do You Know the 4 Main Threat Actor Types?

Do you know the main threat actor types? Most attackers fall into one of four categories, each with their own favored tactics, techniques, and procedures.

 

Author Comment

by:javagair
ID: 39777594
If you put null in the expression, compiler says null is not defined, use system.dbnull which if you do compiler says type system can not be used in expression.
Null was defined in the old Vb, why not now?

datestub = "#2014-01-01 "    'I added the # seems to want one also tried it without the #
Dim cultures() As CultureInfo = {New CultureInfo("en-US")}
savestart = String.Copy(DataGridView1.Item(1, i).Value())  ' this is 8:00
Dim time1, time2, time3, time4 As DateTime  ' time1 defaults to #12:00 AM#

put in a break  on the next statement and run
 time1 = DateTime.ParseExact(datestub & savestart & " AM#", "yyyy-MM-dd hh:mm", cultures(0), DateTimeStyles.None)

so datestub is #2014-01-01 savestart is 8:00  
we end up with #2104-01-01 8:00 AM# or the same with the # and the AM removed.
I get the same message string is in wrong format.

gary
0
 
LVL 24

Expert Comment

by:chaau
ID: 39777644
Sorry, it is VB. You need to use Nothing instead of Null.

Anyway, try this (do not use hashes):
DateTime time2 = DateTime.ParseExact(dateStub + strtime2, "yyyy-MM-dd h:mm", CultureInfo.InvariantCulture)

Open in new window

The main thing here is a single "h" in the time format and "CultureInfo.InvariantCulture"
0
 

Author Comment

by:javagair
ID: 39777720
okay almost got it to work.
anytime greater than 12:00 give the invalid datetime error again.
if I change all times to less than 12 then everything is okay.
So it still does not understand Military time, 24 hr clock

thanks for everything

gary
0
 
LVL 24

Accepted Solution

by:
chaau earned 500 total points
ID: 39777787
Sorry, my mistake again. You needed to use Uppercase H. The lowercase h is for 12 hour format.
DateTime time2 = DateTime.ParseExact(dateStub + strtime2, "yyyy-MM-dd H:mm", CultureInfo.InvariantCulture)

Open in new window

                                           
BTW, if your hours have leading zero, like 08:24, then you need to use HH:
DateTime time2 = DateTime.ParseExact(dateStub + strtime2, "yyyy-MM-dd HH:mm", CultureInfo.InvariantCulture)

Open in new window

0
 

Author Comment

by:javagair
ID: 39778015
thanks
should have noticed that.

works great.

gary
0

Featured Post

Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

Join & Write a Comment

IntroductionWhile developing web applications, a single page might contain many regions and each region might contain many number of controls with the capability to perform  postback. Many times you might need to perform some action on an ASP.NET po…
Introduction This article shows how to use the open source plupload control to upload multiple images. The images are resized on the client side before uploading and the upload is done in chunks. Background I had to provide a way for user…
Internet Business Fax to Email Made Easy - With eFax Corporate (http://www.enterprise.efax.com), you'll receive a dedicated online fax number, which is used the same way as a typical analog fax number. You'll receive secure faxes in your email, fr…
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

757 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now