Solved

Format decimal time into regular for display to user

Posted on 2011-09-23
7
238 Views
Last Modified: 2012-05-12
I have a formview to display users input.
When user enters time I have a dropdown menu where text is 1:30 pm but the value is 13:50. I need it for calculation of pay.
Later I need to display to user his input. My script to format decimal time to regular is attached. The problem is that I get displayed AM to PM time. Example 1:30 AM instead of 1:30 PM.
I realise that I've asked for it when wrote

        If hours >= 12 Then
            a = "PM"
        End If
but cannot figure out how to fix it
Public Function ToDateTime(ByVal value As String) As String
        Dim a As String = "AM"

        Dim tsplit As String() = value.Split("."c)

        Dim hours As Integer = Convert.ToInt32(tsplit(0))
        Dim minutes As Double = Convert.ToDouble(tsplit(1))

        If hours > 12 AndAlso hours <= 24 Then
            hours = hours - 12
        End If
        If hours = 0 Then
            a = "0"
        End If

        If hours >= 12 Then
            a = "PM"
        End If

        If minutes <= 99 Then
            minutes = (60 * (minutes / 100))
            minutes = Math.Floor(minutes)
        End If

        Dim h As String = hours.ToString()
        Dim m As String = minutes.ToString()

        Dim c As String = h & ":" & m & a

        Return c

    End Function

Open in new window

0
Comment
Question by:LessIsMore
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 4
  • 3
7 Comments
 
LVL 7

Expert Comment

by:Bill Nolan
ID: 36589162
Use the DateTime structure and its formatting methods.  (Create it with decimal values, output your desired format with one of the provided format functions, or ToString(string format).)
0
 

Author Comment

by:LessIsMore
ID: 36589594
I looked into DateTime structure and cannot figure out how to exactly to do that. Can you help me out on example? I have 13.75 in database, how to make it look like 1:45PM?
I have problem only with PM, everything else is working
0
 
LVL 7

Accepted Solution

by:
Bill Nolan earned 250 total points
ID: 36589734
See code.  You might want to play around with the format functions for output, or different constructors.
decimal fTime = 13.75m;

DateTime time = new DateTime(
   Year,
   Month,
   Day,
   (int)fTime,
   (int)((fTime - (int)fTime) * 60),
   0);

time.ToShortTimeString();
time.ToString("hh:mm tt");

Open in new window

0
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 

Author Comment

by:LessIsMore
ID: 36601788
I have an error message on it
System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
0
 
LVL 7

Expert Comment

by:Bill Nolan
ID: 36601851
Should be obvious which one is no good, huh?
0
 

Author Comment

by:LessIsMore
ID: 36709879
Not to me, no. Can you get off you horse and help me?
0
 
LVL 7

Expert Comment

by:Bill Nolan
ID: 36712601
What year, month, and date did you provide?
0

Featured Post

[Webinar] Learn How Hackers Steal Your Credentials

Do You Know How Hackers Steal Your Credentials? Join us and Skyport Systems to learn how hackers steal your credentials and why Active Directory must be secure to stop them. Thursday, July 13, 2017 10:00 A.M. PDT

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

User art_snob (http://www.experts-exchange.com/M_6114203.html) encountered strange behavior of Android Web browser on his Mobile Web site. It took a while to find the true cause. It happens so, that the Android Web browser (at least up to OS ver. 2.…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Learn the basics of while and for loops in Python.  while loops are used for testing while, or until, a condition is met: The structure of a while loop is as follows:     while <condition>:         do something         repeate: The break statement m…
The viewer will learn how to dynamically set the form action using jQuery.

691 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