Solved

Format decimal time into regular for display to user

Posted on 2011-09-23
7
230 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
  • 4
  • 3
7 Comments
 
LVL 7

Expert Comment

by:Slimfinger
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:
Slimfinger 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
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

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:Slimfinger
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:Slimfinger
ID: 36712601
What year, month, and date did you provide?
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
Learn how to match and substitute tagged data using PHP regular expressions. Demonstrated on Windows 7, but also applies to other operating systems. Demonstrated technique applies to PHP (all versions) and Firefox, but very similar techniques will w…
The viewer will learn how to dynamically set the form action using jQuery.

939 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

10 Experts available now in Live!

Get 1:1 Help Now