powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как получить и отформатировать разницу двух дат в VBScript
25 сообщений из 52, страница 2 из 3
Как получить и отформатировать разницу двух дат в VBScript
    #37811971
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftAntonariyЯзык задается либо глобально по умолчанию для всего сайта, либо для конкретного asp-файла.
Доступа к телу сейчас, с сожалению, нет, но в одно время мне достался проект где внутри одного ASP-файла, каж-ся, был и васик и JS.Скорее всего это был клиентский js. При инициализации скриптового движка (IActiveScript) указывается конкретный язык, и в последствии его поменять невозможно.
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37811984
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поздновато я "опубликовать" нажал...)
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812003
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ShSergeЧовайохоя,

На "слабò" не ведусь. Я понимаю, Все мне рады помочь, но не получается :)
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812006
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а скрипт никто не смотрел 12613772 ?
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812007
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AntonariyСкорее всего это был клиентский js
Нет - серверный... Просто отложился в голове тот зверинец ASP (VB && JS) + ASP.NET - я его надолго запомнил
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812015
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Човайохояа скрипт никто не смотрел 12613772 ?
Посмотрел. Навскидку - ничего космического. В чем его "нерабочесть"?
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812023
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
неверные результаты
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812047
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тынць -> тынць
http://www.cpearson.com/excel/DateTimeVBA.htm Calculating Age In VBA

The following function will compute a person's age, returning a string such as "45 years 10 months 18 days".
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Function Age(Date1 As Date, Date2 As Date) As String
    Dim Y As Integer
    Dim M As Integer
    Dim D As Integer
    Dim Temp1 As Date
    Temp1 = DateSerial(Year(Date2), Month(Date1), Day(Date1))
    Y = Year(Date2) - Year(Date1) + (Temp1 > Date2)
    M = Month(Date2) - Month(Date1) - (12 * (Temp1 > Date2))
    D = Day(Date2) - Day(Date1)
    If D < 0 Then
        M = M - 1
        D = Day(DateSerial(Year(Date2), Month(Date2) + 1, 0)) + D + 1
    End If
    Age = Y & " years " & M & " months " & D & " days"
End Function



?
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812072
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
AntonariyEx_Softпропущено...

Доступа к телу сейчас, с сожалению, нет, но в одно время мне достался проект где внутри одного ASP-файла, каж-ся, был и васик и JS.Скорее всего это был клиентский js. При инициализации скриптового движка (IActiveScript) указывается конкретный язык, и в последствии его поменять невозможно.Фигня
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<html>
 <body>
<script runat="server" language="JScript">
 var a = new Date(2009,1,31);
 response.Write(a);
</script>

 <%
  toDate=CDate("2009/01/31")
  response.write(toDate)
 %>
 </body>
 </html> 
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812116
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Типо 1:1 (Ваш вариант 12613772 и этот 12616642 )
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
<html>
	<head>
		<meta charset="utf-8"/>
		<title>Test ASP</title>
	</head>
	<body>
<%
Function GetExpires(A, B)
Dim Y, M, D
Dim C

  If A >= B Then
    GetExpires = "Истек"
	Exit Function
  End If
  
  C = A
  Y = 0
  Do While Year(C) < Year(B)
    C = DateAdd("yyyy", 1, C)
    Y = Y + 1
  Loop 
  
  C = A
  M = 0
  Do While Month(C) < Month(B)
    C = DateAdd("m", 1, C)
    M = M + 1
  Loop 
  
  C = A
  D = 0
  Do While Day(C) < Day(B)
    C = DateAdd("d", 1, C)
    D = D + 1
  Loop

  
  GetExpires = Y & " г. " & M & " м. " & D & " д. " 
End Function

Function Age(Date1, Date2)
    Dim Y
    Dim M
    Dim D
    Dim Temp1
    Temp1 = DateSerial(Year(Date2), Month(Date1), Day(Date1))
    Y = Year(Date2) - Year(Date1) + (Temp1 > Date2)
    M = Month(Date2) - Month(Date1) - (12 * (Temp1 > Date2))
    D = Day(Date2) - Day(Date1)
    If D < 0 Then
        M = M - 1
        D = Day(DateSerial(Year(Date2), Month(Date2) + 1, 0)) + D + 1
    End If
    Age = Y & " years " & M & " months " & D & " days"
End Function

Dim b
Dim e

b=#1/1/1900#
e=#29/2/2012#
response.write(b)
response.write("<br/>")
response.write(e)
response.write("<br/>")
response.write(GetExpires(b, e))
response.write("<br/>")
response.write(Age(b, e))
%>
	</body>
</html>
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812150
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ex_Soft,

спасибо, уже что-то

Ex_SoftТипо 1:1но иногда (с некоторыми датами) значение неверное
например с этими:
25.05.2012 и 07.12.2012
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812178
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и с функцией Age из 12616642 с некоторыми датами результат отличается от результата функции на Delphi на 2 дня, а с некоторыми сопадает :(
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812185
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Човайохояно иногда (с некоторыми датами) значение неверное
например с этими:
25.05.2012 и 07.12.2012
/me вспоминает:
Ex_Softглавная проблема не в реализации на уже конкретном языке, а в алгоритме

Неверное на чей взгляд? А сколько по Вашему д.б.? BTW, ознакомтесь как работает DateAdd
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812194
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Човайохояи с функцией Age из 12616642 с некоторыми датами результат отличается от результата функции на Delphi на 2 дня, а с некоторыми сопадает :(
Я ж Вам показывал:
Ex_Softбудет нечто усредненное а-ля Борманского:
Код: sql
1.
2.
3.
4.
function MonthSpan(ANow,AThen)
{
	return(DaySpan(ANow,AThen)/30.4375 /* ApproxDaysPerMonth */);
}



посмотрите исходники VCL - я ж оттуда сие на JS'е "цицировал"...
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812232
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Что-то мне кажется, что в Function Age вместо строчки
D = Day(DateSerial(Year(Date2), Month(Date2) + 1, 0)) + D + 1
надо
D = Day(DateSerial(Year(Date2), Month(Date2), 0)) + D

а то неадекватные результаты получаются скажем для 30.04.2012 - 01.05.2012 или 31.01.12 - 01.02.2012
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812237
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поиграйтесь вот с этим:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
Dim DateTest, ReturnStr
DateTest="01.01.2011"


ReturnStr=DateDiff("yyyy",DateTest,Now)  & " y " & DateDiff("m",DateTest,Now)  & " m " & DateDiff("d",DateTest,Now)  & " d "
MsgBox ReturnStr

MsgBox CDate(DateDiff("d",DateTest,Now))
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812324
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Фигня
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<html>
 <body>
<script runat="server" language="JScript">
 var a = new Date(2009,1,31);
 response.Write(a);
</script>

 <%
  toDate=CDate("2009/01/31")
  response.write(toDate)
 %>
 </body>
 </html> 

Так можно. Это разные контексты. Наверное и так можно:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
<html>
 <body>
<script runat="server" language="JScript">
 var a = new Date(2009,1,31);
 response.Write(a);
</script>

<script runat="server" language="VBScript">
  toDate=CDate("2009/01/31")
  response.write(toDate)
</script>
 </body>
 </html> 

Но тоже контексты будут разные.

Так нельзя:
Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
<%
 var a = new Date(2009,1,31);
 response.Write(a);
%>

 <%
  toDate=CDate("2009/01/31")
  response.write(toDate)
 %>
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812352
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
2.
3.
4.
5.
Dim DateTest, ReturnStr
DateTest="10.02.2010"
DateTest=CDate(DateDiff("d",DateTest,Now))
ReturnStr=CStr(CInt(mid(DateTest,7,4))-1900)  & " y " &  CStr(CInt(mid(DateTest,4,2)))  & " m " &  CStr(CInt(mid(DateTest,1,2))) & " d "
MsgBox ReturnStr
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812360
ART-CODE
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
ReturnStr=CStr(CInt(YEAR(DateTest))-1900)  & " y " &  CStr(CInt(MONTH(DateTest)))  & " m " &  CStr(CInt(DAY(DateTest))) & " d "
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812387
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ART-CODE,

я так пробовал, и Ваш код попробовал - результат неверный
15.07.2012 - 25.04.2012 = 0 y 2 m 19 d
а должно быть 0 y 1 m 20 d
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812405
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЧовайохояART-CODE,

я так пробовал, и Ваш код попробовал - результат неверный
15.07.2012 - 25.04.2012 = 0 y 2 m 19 d
а должно быть 0 y 1 m 20 dДа ну? DateDiff дает 81 день, а это всяко больше двух месяцев.

Впрочем у меня этот способ для этих дат показал 0y 3m 21d.
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812412
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Antonariy,

извиняюсь, я ошибся
15.07.2012 - 25. 05 .2012 = 0 y 2 m 19 d
а должно быть 0 y 1 m 20 d
так что всё равно не правильно


сейчас я пытаюсь так:

Код: vbnet
1.
2.
3.
4.
5.
6.
Function Age2(A, B)
  Dim D
  D = DateDiff("d", A, B)
  D = DateAdd("yyyy", -1900, D)
  Age2 = Year(D) & " y " & Month(D) & " m " & Day(D) & " d "
End Function


но почему-то не работает если отрицательное число
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812418
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
поправка D = DateAdd("yyyy", -1900 , D)

AntonariyВпрочем у меня этот способ для этих дат показал 0y 3m 21d.если 25. 04 .2012, то у меня также
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812432
Човайохоя
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
если -1800 то работает, если хоть на 1 больше (-1801), то функция не возвращает результат
хотя какая разница, месяц и год 1х неправильные
...
Рейтинг: 0 / 0
Как получить и отформатировать разницу двух дат в VBScript
    #37812438
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Човайохоя15.07.2012 - 25. 05 .2012 = 0 y 2 m 19 d
а должно быть 0 y 1 m 20 d2 потому что нумерация месяцев с 1. Нужно 1 отнимать.

19 потому что 31 день в январе. И тут нужно подумать: допустим начало периода в середине одного месяца, конец в середине следующего, длина периода 31 день. Сколько же прошло, 31 день или 1 месяц и 1 день?

И все равно в феврале 1900 года было 28 дней, так что високосные года пролетают.
...
Рейтинг: 0 / 0
25 сообщений из 52, страница 2 из 3
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Как получить и отформатировать разницу двух дат в VBScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]