[Webinar] Streamline your web hosting managementRegister Today

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 245
  • Last Modified:

Format decimal time into regular for display to user

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
LessIsMore
Asked:
LessIsMore
  • 4
  • 3
1 Solution
 
Bill NolanOwner, Lead Technology ProgrammerCommented:
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
 
LessIsMoreAuthor Commented:
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
 
Bill NolanOwner, Lead Technology ProgrammerCommented:
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
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
LessIsMoreAuthor Commented:
I have an error message on it
System.ArgumentOutOfRangeException: Year, Month, and Day parameters describe an un-representable DateTime.
0
 
Bill NolanOwner, Lead Technology ProgrammerCommented:
Should be obvious which one is no good, huh?
0
 
LessIsMoreAuthor Commented:
Not to me, no. Can you get off you horse and help me?
0
 
Bill NolanOwner, Lead Technology ProgrammerCommented:
What year, month, and date did you provide?
0

Featured Post

[Webinar] Improve your customer journey

A positive customer journey is important in attracting and retaining business. To improve this experience, you can use Google Maps APIs to increase checkout conversions, boost user engagement, and optimize order fulfillment. Learn how in this webinar presented by Dito.

  • 4
  • 3
Tackle projects and never again get stuck behind a technical roadblock.
Join Now