2012-05-22 4 views
1

Работа на веб-сайте, который представляет собой комбинацию JQuery Mobile и ASP 4. В настоящее время я застрял в форме, которую я пытаюсь выполнить для SQL-вставки. Я пытаюсь использовать код в VB для обработки моей вставки ...Круглый час; aspx.vb

Все, что нужно сказать: мне нужна моя страница для преобразования минутного значения в час & Квартальный формат, округление до ближайшей четверти часа.

В настоящее время я беру два раза в текстовые поля (например, 8:00:00 и 9:12:00). Если я использую TimeSpan, я могу рассчитать разницу между двумя значениями и сбросить эту разницу в переменную, например tElapsed = tSpan.TotalMinutes.ToString установит tElapsed = 72 для указанных выше раз. Мне нужно преобразовать это в формат 1.0hr, 1.25hr, 1.5hr и т. Д. И округлить 3 + минуты до следующих полчаса ... и я продолжаю застревать.

Синопсис:

Есть:

Text Box: Time1 = 8:00:00 AM 
Text Box: Time2 = 9:12:00 AM 
Dim tDiff As String = DateTime.Parse.(Time2.Text) - DateTime.Parse(Time1.Text) 
Dim tElapse As String = tDiff.TotalMinutes.ToString 

tElapse вернется 72 за выше, теперь мне нужно, чтобы преобразовать 72 (мин) до 1,25 (часов).

1,25 часа может быть любым из: 64 минут - 78 минут

Любая помощь будет оценена ...

ответ

2

Вы можете использовать Math.DivRem

int remainder; 
int whole = Math.DivRem(tDiff.TotalMinutes, 60, out remainder); 

На данный момент остаток будет теперь будет то, что осталось между часами. От 0 до 59 минут. Я не был чист о том, как вы хотели точно округлить это, но (двойной) остаток/60,00 даст вам десятичное место, которое вы можете затем добавить к целому.

+0

Спасибо! Так оно и было. Я использовал это и CASE, чтобы закончить, я знал, что дело вступит в игру, но я не мог понять, как отделить «остаток». Ниже мой код: –

+0

'Dim tDff Как TimeSpan = DateTime.Parse (tbEnd.Text) - DateTime.Parse (tbStrt.Text) Dim мин As Integer = tDff.TotalMinutes.ToString Dim rmndr As Integer Dim часов As String = Math.DivRem (мин, 60, rmndr) дим qtyordr As String Select Case rmndr Case 1 до 2 qtyordr = ч Случай 3 до 18 qtyordr = ч &».25" Дело 19 К 28 qtyordr = hrs & ".50" Корпус 29 К 48 qtyordr = hrs & ".75" Номер дела qtyordr = (hrs + 1) & ".00" End Select lblResult.Text = qtyordr' –

+0

Извините, если публикация ответа наполнила вас сообщениями. Последнее, что я обещаю. Просто хотел пожаловаться на это, обжарив структуру кода ... –

0

Вот решение, которое я использовал, отправляя его в качестве ответа, так что структура кода будет отображаться:

Dim tDiff As TimeSpan = DateTime.Parse(textboxEnd.Text) - DateTime.Parse(textboxStart.Text) 
    Dim mins As Integer = tDiff.TotalMinutes.ToString 
    Dim remainder As Integer 
    Dim hrs As String = Math.DivRem(mins, 60, remainder) 
    Dim qtyorder As String 
    Select Case remainder 
     Case 1 To 2 
      qtyorder = hrs 
     Case 3 To 18 
      qtyorder = hrs & ".25" 
     Case 19 To 28 
      qtyorder = hrs & ".50" 
     Case 29 To 48 
      qtyorder = hrs & ".75" 
     Case Else 
      qtyorder = (hrs + 1) & ".00" 
    End Select 

    lblResult.Text = qtyorder 
Смежные вопросы