2015-10-05 4 views
1

Я пытаюсь вычесть определенное количество секунд с даты использования в другом месте. Тем не менее, мне нужно, чтобы это было 24-часовой формат. Здесь функция у меня есть:dateAdd секунд без AM/PM?

Function getDateTime(df) 'timediff 
    getDateTime = DateAdd("S",0 - df,Now) 
End Function 

Она должна быть в формате 10/5/2015 13:58:32 вместо 10/5/2015 1:58:32 PM

Существует простой способ преобразовать это, или мне нужно делать оценки и манипуляций со строками? (if hrs > 12 { etc... })

+2

Какие СУБД? Пойдем, у тебя есть 3000 + репутация, ты должен знать лучше. –

+0

Я действительно хотел включить его (таким образом, скобки), я просто забыл вернуться и добавить его. :) –

+0

@ScottBeeson - вам обязательно нужно пометить его –

ответ

1

Сделка с этим в another question.

VBScript Date/Time хранится как целое число, когда вы видите конкретный формат, который является только временем выполнения, выводя строковое представление по умолчанию этой переменной Date/Time (обычно с использованием региональных настроек компьютеров).

Function FormatDate(df) 
    FormatDate = Right("00" & Day(df), 2) & _ 
    "/" & Right("00" & Month(df), 2) & "/" & Year(df) & _ 
    " " & Right("00" & Hour(df), 2) & ":" & _ 
    Right("00" & Minute(df), 2) & ":" & Right("00" & Second(df), 2) 
End Function 

Существует и другие вещи, которые вы могли бы сделать, что использование Left(MonthName(Month(df)), 3), чтобы избежать проблем с форматом даты, когда у вас есть даты like 04/04/2015, например (до тех пор, как СУБД поддерживает его).

+0

Это не включает второе смещение, но оно определенно объясняет, как правильно отформатировать его после выполнения смещения. –

+0

@ScottBeeson Да, предположил, что вы использовали бы его как 'getDateTime = FormatDate (df)' – Lankymart

+0

В моей исходной функции 'df' был разницей в секундах, но я ее получил. –

0

Хорошо, дело с датами на любом языке программирования (или СУБД в этом отношении) заключается в том, что они всего лишь значения. Как они появляются в вашей среде IDE, скриптовом инструменте или когда запрос от СУБД не имеет значения. На самом деле они хранятся одинаково «под капотом».

Если вы хотите, чтобы они отображались определенным образом для отчета, пользовательского интерфейса и т. Д., Вы должны преобразовать их в строку с определенным форматом. Опять же, чтобы повторить, даты являются только числовыми значениями, когда они хранятся в памяти.

Когда вы говорите: «Это должно быть в формате 10/5/2015 13:58:32 вместо 10/5/2015 1:58:32 PM», последнее значение - это то, как ваш отладчик (наиболее вероятно, используя вызов ToString() с форматом даты по умолчанию).

+0

К сожалению, это неверно в этом случае. То, что я выводил дату, может не только принимать очень конкретные форматы. –

+2

@ScottBeeson - Вы интерпретируете это неправильно. То, что я сказал в моем ответе, всегда верно. То, что вы выводите дату, покрывается «и т. Д.», в моем заявлении «Если вы хотите, чтобы они отображались определенным образом для отчета, в пользовательском интерфейсе и т. д., вы должны преобразовать их в строку с определенным форматом». В общем, дело в том, что вы должны перевести значение даты (которое является числом в памяти) в любой формат, который вам нужен, чтобы получить его в другой системе, будь то СУБД, пользовательский интерфейс («система» используется более абстрактным образом) и т. д. –

+0

Хорошо, я вижу. Итак, вы спорите семантику и говорите, что я должен был указать, что я хочу «ВЫХОДИТЬ» дату в определенном формате? Я имею в виду, я ценю это различие, но он ничего не сделал, чтобы помочь мне решить проблему :( –

1

Это моя функция заменена:

Function getDateTime(df) 'timediff in seconds 
    getDateTime = FormatDateTime(DateAdd("S",0 - df,Now),vbGeneralDate) 
    getDateTime = Year(getDateTime) & "-" & Month(getDateTime) & "-" & Day(getDateTime)_ 
    & " " & Hour(getDateTime) & ":" & Minute(getDateTime) & ":" & (Second(getDateTime)) 
End Function 

Благодаря @Lankymart за указание на простой факт, я был видом. Не стесняйтесь публиковать сообщения, и я соглашусь с вами в качестве ответа.