Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 15.11.2006
Сообщений: 4

Как сделать календарь?

15.11.2006, 02:20. Показов 6209. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите сделать календарь на АСП. Задание такое: Реализовать с помощью ASP стандартный календарь. Подобные календари обычно используются в Internet/Intranet для показа структурированной по дате информации: новостей, событий и пр.
По умолчанию должен показываться календарь на текущий месяц (если сегодня).
Активное число как-либо выделяется. По умолчанию активным является сегодняшнее число.
Также должны быть особо выделены выходные дни.
На каждой дате <= текущей должна стоять ссылка, по которой можно перейти в режим, когда активным становится число, которое выбрали
Ответы присылайте пожалуйста на мыло: a14lexander@mail.ru
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2006, 02:20
Ответы с готовыми решениями:

Как сделать такой календарь?
Помогите друзья, у меня из вертки осталась эта часть? Не знаю как его сделать? У кого какие идеи? буду благодарна за любой деловое...

Как сделать календарь на английском
Допустим у меня есть код ... &lt;input type=&quot;date&quot;&gt; ... Когда я открываю браузер я увижу календарь на русском (названия...

Подскажите как сделать календарь
Мне нужно чтобы в ячейку выводилась дата выбранная в календаре

12
asd
15.11.2006, 02:26
Visual Basic
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
<%
'' ***Begin Function Declaration***
'' New and improved GetDaysInMonth implementation.
'' Thanks to Florent Renucci for pointing out that I
'' could easily use the same method I used for the
'' revised GetWeekdayMonthStartsOn function.
Function GetDaysInMonth(iMonth, iYear)
    Dim dTemp
    dTemp = DateAdd('d', -1, DateSerial(iYear, iMonth + 1, 1))
    GetDaysInMonth = Day(dTemp)
End Function
 
'' Previous implementation on GetDaysInMonth
''Function GetDaysInMonth(iMonth, iYear)
''  Select Case iMonth
''      Case 1, 3, 5, 7, 8, 10, 12
''          GetDaysInMonth = 31
''      Case 4, 6, 9, 11
''          GetDaysInMonth = 30
''      Case 2
''          If IsDate('February 29, ' & iYear) Then
''              GetDaysInMonth = 29
''          Else
''              GetDaysInMonth = 28
''          End If
''  End Select
''End Function
 
Function GetWeekdayMonthStartsOn(dAnyDayInTheMonth)
    Dim dTemp
    dTemp = DateAdd('d', -(Day(dAnyDayInTheMonth) - 1), dAnyDayInTheMonth)
    GetWeekdayMonthStartsOn = WeekDay(dTemp)
End Function
 
Function SubtractOneMonth(dDate)
    SubtractOneMonth = DateAdd('m', -1, dDate)
End Function
 
Function AddOneMonth(dDate)
    AddOneMonth = DateAdd('m', 1, dDate)
End Function
'' ***End Function Declaration***
 
 
Dim dDate     '' Date we''re displaying calendar for
Dim iDIM      '' Days In Month
Dim iDOW      '' Day Of Week that month starts on
Dim iCurrent  '' Variable we use to hold current day of month as we write table
Dim iPosition '' Variable we use to hold current position in table
 
 
'' Get selected date.  There are two ways to do this.
'' First check if we were passed a full date in RQS('date').
'' If so use it, if not look for seperate variables, putting them togeter into a date.
'' Lastly check if the date is valid...if not use today
If IsDate(Request.QueryString('date')) Then
    dDate = CDate(Request.QueryString('date'))
Else
    If IsDate(Request.QueryString('month') & '-' & Request.QueryString('day') & '-' & Request.QueryString('year')) Then
        dDate = CDate(Request.QueryString('month') & '-' & Request.QueryString('day') & '-' & Request.QueryString('year'))
    Else
        dDate = Date()
        '' The annoyingly bad solution for those of you running IIS3
        If Len(Request.QueryString('month')) <> 0 Or Len(Request.QueryString('day')) <> 0 Or Len(Request.QueryString('year')) <> 0 Or Len(Request.QueryString('date')) <> 0 Then
            Response.Write 'The date you picked was not a valid date.  The calendar was set to today''s date.
 
'
        End If
        '' The elegant solution for those of you running IIS4
        ''If Request.QueryString.Count <> 0 Then Response.Write 'The date you picked was not a valid date.  The calendar was set to today''s date.
 
'
    End If
End If
 
''Now we''ve got the date.  Now get Days in the choosen month and the day of the week it starts on.
iDIM = GetDaysInMonth(Month(dDate), Year(dDate))
iDOW = GetWeekdayMonthStartsOn(dDate)
 
%>
<!-- Outer Table is simply to get the pretty border-->
<TABLE BORDER=10 CELLSPACING=0 CELLPADDING=0>
<TR>
<TD>
<TABLE BORDER=1 CELLSPACING=0 CELLPADDING=1 BGCOLOR=#99CCFF>
    <TR>
        <TD BGCOLOR=#000099 ALIGN='center' COLSPAN=7>
            <TABLE WIDTH=100% BORDER=0 CELLSPACING=0 CELLPADDING=0>
                <TR>
                    <TD ALIGN='right'><A HREF='./calendar.asp?date=<%= SubtractOneMonth(dDate) %>'><FONT COLOR=#FFFF00 SIZE='-1'&g  T>
<SELECT NAME='month'>
    <OPTION VALUE=1>January</OPTION>
    <OPTION VALUE=2>February</OPTION>
    <OPTION VALUE=3>March</OPTION>
    <OPTION VALUE=4>April</OPTION>
    <OPTION VALUE=5>May</OPTION>
    <OPTION VALUE=6>June</OPTION>
    <OPTION VALUE=7>July</OPTION>
    <OPTION VALUE=8>August</OPTION>
    <OPTION VALUE=9>September</OPTION>
    <OPTION VALUE=10>October</OPTION>
    <OPTION VALUE=11>November</OPTION>
    <OPTION VALUE=12>December</OPTION>
</SELECT>
<SELECT NAME='day'>
    <OPTION VALUE=1>1</OPTION>
    <OPTION VALUE=2>2</OPTION>
    <OPTION VALUE=3>3</OPTION>
    <OPTION VALUE=4>4</OPTION>
    <OPTION VALUE=5>5</OPTION>
    <OPTION VALUE=6>6</OPTION>
    <OPTION VALUE=7>7</OPTION>
    <OPTION VALUE=8>8</OPTION>
    <OPTION VALUE=9>9</OPTION>
    <OPTION VALUE=10>10</OPTION>
    <OPTION VALUE=11>11</OPTION>
    <OPTION VALUE=12>12</OPTION>
    <OPTION VALUE=13>13</OPTION>
    <OPTION VALUE=14>14</OPTION>
    <OPTION VALUE=15>15</OPTION>
    <OPTION VALUE=16>16</OPTION>
    <OPTION VALUE=17>17</OPTION>
    <OPTION VALUE=18>18</OPTION>
    <OPTION VALUE=19>19</OPTION>
    <OPTION VALUE=20>20</OPTION>
    <OPTION VALUE=21>21</OPTION>
    <OPTION VALUE=22>22</OPTION>
    <OPTION VALUE=23>23</OPTION>
    <OPTION VALUE=24>24</OPTION>
    <OPTION VALUE=25>25</OPTION>
    <OPTION VALUE=26>26</OPTION>
    <OPTION VALUE=27>27</OPTION>
    <OPTION VALUE=28>28</OPTION>
    <OPTION VALUE=29>29</OPTION>
    <OPTION VALUE=30>30</OPTION>
    <OPTION VALUE=31>31</OPTION>
</SELECT>
<SELECT NAME='year'>
    <OPTION VALUE=1990>1990</OPTION>
    <OPTION VALUE=1991>1991</OPTION>
    <OPTION VALUE=1992>1992</OPTION>
    <OPTION VALUE=1993>1993</OPTION>
    <OPTION VALUE=1994>1994</OPTION>
    <OPTION VALUE=1995>1995</OPTION>
    <OPTION VALUE=1996>1996</OPTION>
    <OPTION VALUE=1997>1997</OPTION>
    <OPTION VALUE=1998>1998</OPTION>
    <OPTION VALUE=1999>1999</OPTION>
    <OPTION VALUE=2000 SELECTED>2000</OPTION>
    <OPTION VALUE=2001>2001</OPTION>
    <OPTION VALUE=2002>2002</OPTION>
    <OPTION VALUE=2003>2003</OPTION>
    <OPTION VALUE=2004>2004</OPTION>
    <OPTION VALUE=2005>2005</OPTION>
    <OPTION VALUE=2006>2006</OPTION>
    <OPTION VALUE=2007>2007</OPTION>
    <OPTION VALUE=2008>2008</OPTION>
    <OPTION VALUE=2009>2009</OPTION>
    <OPTION VALUE=2010>2010</OPTION>
</SELECT>
 
 
<INPUT TYPE='submit' VALUE='Show This Date on the Calendar!'>
</FORM>
</TD></TR></TABLE>
0 / 0 / 0
Регистрация: 15.11.2006
Сообщений: 4
15.11.2006, 19:53  [ТС]
Братишка СПАСИБО!
Пойду проверять и пробовать.
0
0 / 0 / 0
Регистрация: 15.11.2006
Сообщений: 4
15.11.2006, 22:22  [ТС]
АСД! У тебя где-то ошибка в коде. Попробуй запусти календарь на 1 января 2000 года. Потом нажми на 2 января. Вместо того чтобы сделать 2 января текущим днем календарь перепрыгнет на Февраль 2000 года.
0
asd
15.11.2006, 23:16
Специально попробовал, все ок. Я не знаю, может, конечно, что-то и не так, но тогда пишите конкретней.
0 / 0 / 0
Регистрация: 21.11.2006
Сообщений: 10
21.11.2006, 05:00
Ребят, у вас вся фишка в установках Regional setting в ControlPanel.
Т.е. разные у вас установки. У одного dd/mm/yy, а у другого mm/dd/yy.
Поэтому и перескакивает вместо 2-го числа на 2-ой месяц.
По-моему так. Сам с этим встречался часто.
0
asd
21.11.2006, 05:03
А блин, точно! Stirlic спасибо, все конечно зависит от сервера, на котором крутится эта ASP-страница и надо поменять местами, если не подходит.
0 / 0 / 0
Регистрация: 25.09.2006
Сообщений: 15
21.11.2006, 10:02
Rebiata, posmotrite drugoy kalendar'', na sayte Russian Toronto Dates:
http://rtd.ods.org/calendar/display.asp
Vse rabotaet s bd.

Mozhete posmotret'' takzhe kak dobavit'' v opredelenniy den'':
http://rtd.ods.org/calendar/dispToAdd.asp
0
0 / 0 / 0
Регистрация: 25.09.2006
Сообщений: 15
21.11.2006, 10:04
Kstati, kod ukazanniy vishe takzhe naxoditsia na www.asp101.com v razdele Samples.


Ya ego modificiroval, chtob on rabotal s bazoy dannix (SQL Server i Access).

Looks very god damn good.
0
0 / 0 / 0
Регистрация: 15.11.2006
Сообщений: 4
21.11.2006, 20:31  [ТС]
Ребята все конечно работает, но код нужно немного поменять, чтоб он не зависел от региональных установок.
0
0 / 0 / 0
Регистрация: 21.11.2006
Сообщений: 10
22.11.2006, 02:34
asd, а ты заметил, что если (при неблагоприятных RegionalSetting) попробовать перейти на 14 января - то он переходит правильно, хотя должен был минимум выдать ошибку.
Т.е. он 'врубается', что 14 месяца не бывает! )
0
0 / 0 / 0
Регистрация: 21.11.2006
Сообщений: 10
22.11.2006, 04:20
Чтобы код не зависел от RegionalSetting надо параметр date передавать не как строчку 'mm-dd-yyyy', а как Datetime. И соответственно на входе страницы ее разбирать на mm, dd и yyyy.

У меня на SQL-S есть процедурка:
T-SQL
1
2
3
4
5
CREATE PROCEDURE calendar (@D int, @M int, @Y int) AS
DECLARE @Date datetime
select @Date=Dateadd(dd, @D, Dateadd(mm, @M, Dateadd(yy, @Y, getdate())))
select @Date=Dateadd(dd, -datepart(dd, getdate()), Dateadd(mm, -datepart(mm, getdate()), Dateadd(yy, -datepart(yy, getdate()), @Date)))
select @Date as iDate
На входе: @D-день, @M-месяц, @Y-год (в формате ХХХХ)
На выходе: iDate - тип данных Datetime

Алгоритм не лучший
но как это обычно бывает 'писал на скорую руку, переделывать влом'
0
0 / 0 / 0
Регистрация: 25.09.2006
Сообщений: 15
22.11.2006, 04:54
Eshe odna funktsiya dlia togo, chtob vse bilo normal''no s datami:

Visual Basic
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
Function FormatTimestampDB(dTimestampToFormat)
    '' Formats to 'm/d/yyyy h:mm:ss AM' format
    '' Change as appropriate to match your DB
    Dim strMonth, strDay, strYear
    Dim strHour, strMinute, strSecond
    Dim strAMPM
    
    strMonth = Month(dTimestampToFormat)
    strDay = Day(dTimestampToFormat)
    strYear = Year(dTimestampToFormat)
    ''strYear = Right(Year(dTimestampToFormat), 2)
 
    strHour = Hour(dTimestampToFormat) Mod 12
    If strHour = 0 Then strHour = 12
    
    If Hour(dTimestampToFormat) < 12 Then
        strAMPM = 'AM'
    Else
        strAMPM = 'PM'
    End If
 
    strMinute = Minute(dTimestampToFormat)
    If Len(strMinute) = 1 Then strMinute = '0' & strMinute
    
    strSecond = Second(dTimestampToFormat)
    If Len(strSecond) = 1 Then strSecond = '0' & strSecond
 
    '' 'd/m/yyyy h:mm:ss AM' for all those who have had problems.
    ''FormatTimestampDB = strDay & '/' & strMonth & '/' & strYear & ' ' & strHour & ':' & strMinute & ':' & strSecond & ' ' & strAMPM
    
    FormatTimestampDB = strMonth & '/' & strDay & '/' & strYear & ' ' & strHour & ':' & strMinute & ':' & strSecond & ' ' & strAMPM
End Function

Dal''she vizivaesh'' ee kak FormatTimestampDB(Yourdate) Data budet v uzhno formate
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.11.2006, 04:54
Помогаю со студенческими работами здесь

Как сделать красивый календарь?
Подскажите плиз, как сделать в своей базе красивый календарный вид, аналогичный как сделано в лотусовой почтовой базе?

Как сделать чтобы кнопки на панели использовали календарь MonthCalendar?
1) Как сделать чтобы мои кнопки на панели использовали календарь справа?! и можно было переключать месяца и года! Их синхронизировать...

Как в MS Excel сделать выпадающий календарь при выборе ячейки мышкой
Всем привет! Как в MS Excel сделать выпадающий календарь при выборе ячейки мышкой?

Как сделать поле для выбора даты (выпадающий календарь) на странице, сформированной контроллером?
Я создал модель и контроллер. Контроллер сформировал стандартные 4 страницы со своими полями. Мне одно поле нужно сделать выпадающим...

Выпадающий календарь не видно под другими элементами, как сделать, чтобы он был сверху?
Что нужно сделать, чтобы календарь был поверх всех элементов? Может быть что-то нужно добавить в код? Заранее спасибо. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит: токи, напряжения и их 1 и 2 производные при t = 0;. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru