hallmertMedlem sedan dec. 2004182 inlägg Hej på er!
Jag håller på att skriva diverse prylar och skulle behöva hjälp med en grej som jag inte riktigt ens vet hur jag ska försöka lösa.
Jag har <%=rs("datum")%> som utskrivet ser ut exempelvis
2005-07-15 10:32:25 - ett helt datum som skrivs in i min databas med "Now" helt enkelt!
Nu skulle jag vilja formatera det här lite när det skrivs ut, och skulle vilja ha något i den här stilen:
" Idag kl. 10:32 " <-- OM DET ÄR IDAG.
" Fredagen den 7 juli kl. 10:32 " <-- OM DATUMET VAR FÖR FLERA DAGAR SEN.
" Igår kl. 10:32 " <-- OM DATUMET VAR IGÅR.
Är det svåra grejer? Vore tacksam för hjälp med det här scriptet!
Stort tack i förväg!
cyprysMedlem sedan dec. 20003 563 inlägg med reservation för något syntaxfel
select case date(rs("datum"))
case date()
response.write "Idag " & time(rs("datum"))
case dateadd("d",-1, date())
response.write "Igår " & time(rs("datum"))
case else
response.write FormatDateTime(rs("datum"),vbLongDate)
hallmertMedlem sedan dec. 2004182 inlägg Jag fick det inte att fungera, här är min kod:
<table width="469" cellpadding="0" cellspacing="0">
<%
Set MinCon = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.RecordSet")
MinCon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("db/db.mdb")
SQL = "select top 1 * from blogg order by datum desc"
rs.Open SQL, MinCon
Do While Not rs.EOF
%>
<tr>
<td width="469" valign="top">
<div class="rubrik"><%=lCase(rs("rubrik"))%>,
<% select case date(rs("datum"))
case date()
response.write "Idag " & time(rs("datum"))
case dateadd("d",-1, date())
response.write "Igår " & time(rs("datum"))
case else
response.write FormatDateTime(rs("datum"),vbLongDate) %>
<%=replace(rs("text"), vbCrLf, "<br>")%>
</td>
</tr>
<tr>
<td width="469" height="5"></td>
</tr>
<tr>
<td width="469" height="1" bgcolor="#D0D0D0"></td>
</tr>
<tr>
<td width="469" height="20" valign="middle" align="right">
</td>
</tr>
<%
rs.movenext
Loop
%>
</table>
Och felmeddelande:
Feltyp:
Kompileringsfel i Microsoft VBScript (0x800A040E)
'loop' utan 'do'
/sidor/blogg/start.asp, line 39
hallmertMedlem sedan dec. 2004182 inlägg Hjälper ändå inte. Och vad har end select med felmeddelandet att göra?
cyprysMedlem sedan dec. 20003 563 inlägg Vad menar du med 'hjälper ändå inte'? Vad får du för nytt felmeddelande?
Jag glömde 'end select' vilket även gällde i din kod.
select case date(rs("datum"))
case date()
response.write "Idag " & time(rs("datum"))
case dateadd("d",-1, date())
response.write "Igår " & time(rs("datum"))
case else
response.write FormatDateTime(rs("datum"),vbLongDate)
end select
Kör detta och skicka ditt nya felmeddelande, om du får något d.v.s.
hallmertMedlem sedan dec. 2004182 inlägg Det här blir nya felmeddelandet:
Feltyp:
Körningsfel i Microsoft VBScript (0x800A01C2)
Fel antal argument eller felaktig egenskapstilldelning.: 'date'
/sidor/blogg/start.asp, line 15
BaltizMedlem sedan maj 200591 inlägg Tja, då är väl felet på rad 15. Kan ju inte vara så svårt att kolla upp när man har felmeddelandet i klartext på svenska.
hallmertMedlem sedan dec. 2004182 inlägg <% select case date(rs("datum"))
Där har du rad femton! Varsågod, hitta ett fel!
BaltizMedlem sedan maj 200591 inlägg Date är ingen funktion som tar parameter, testa CDate istället.
cyprysMedlem sedan dec. 20003 563 inlägg Ok. Tanken var mest att visa hur man kan göra då min syntax sällan är på hugget. Detta är t.o.m. testat och fungerar.
datum = rs("datum")
select case cdate(FormatDateTime(datum,vbShortDate))
case date()
response.write "Idag " & FormatDateTime(datum, vbShortTime)
case dateadd("d",-1, date())
response.write "Igår " & FormatDateTime(datum, vbShortTime)
case else
response.write FormatDateTime(datum,vbLongDate)
end select
Istället för att starta en till tråd så fortsätter jag här.
Har suttit och fipplat lite på en ny funktion till vår nya webbplats och har lyckats trixa fram de senaste 5 svaren från forumet. Men stött på lite "problem" nu när jag också vill skriva ut tidpunkt.
Hitta funktionen här i denna tråd som såg intressant, eftersom den skriver ut ordet Idag om svaret skrevs idag osv.. Men jag har inte klurat ut HUR jag ska få in funktionen i min Loop. :q
datum = rs("datum")
select case cdate(FormatDateTime(datum,vbShortDate))
case date()
response.write "Idag " & FormatDateTime(datum, vbShortTime)
case dateadd("d",-1, date())
response.write "Igår " & FormatDateTime(datum, vbShortTime)
case else
response.write FormatDateTime(datum,vbLongDate)
end select
Sparar datum i följande format i databasen: 20090519192344
Datumet plockar jag fram med följande: & RSForum_REPLY("T_LAST_POST") & vilket inte blir så snyggt..
SQLForum_REPLY = "SELECT * FROM forum_topics order by T_LAST_POST_REPLY_ID DESC LIMIT 0,5"
set RSForum_REPLY = ConnectForum_REPLY.Execute (SQLForum_REPLY)
do while not RSForum_REPLY.eof
Response.write "<img src=""http://www.medialabs.se/images/pil_nyheter.gif"" width=""9"" height=""10"" border=""0"" alt=""""> <a href=""http://www.posthistoria.nu/forum/topic.asp?TOPIC_ID=" & RSForum_REPLY("TOPIC_ID") & """ target=""_blank"">" & RSForum_REPLY("T_SUBJECT") & "</i></a> " [B]& RSForum_REPLY("T_LAST_POST") &[/B]"<br>"
RSForum_REPLY.MoveNext
Loop
Kan kanske använda: http://www.webforum.nu/showthread.php?t=43454 ?
Eller om du vill använda dig av koden ovan, lägg det i en funktion:
Function DisplayDate(datum)
select case cdate(FormatDateTime(datum,vbShortDate))
case date()
DisplayDate = "Idag " & FormatDateTime(datum, vbShortTime)
case dateadd("d",-1, date())
DisplayDate = "Igår " & FormatDateTime(datum, vbShortTime)
case else
DisplayDate = FormatDateTime(datum,vbLongDate)
end select
End Function
Och anropar den med DisplayDate(RSForum_REPLY("T_LAST_POST"))
BiasseMedlem sedan aug. 2003480 inlägg Ska väl fungera att lägga in detta i loopen?
idag = date()
igar = DateAdd("d",-1,date())
datum = cdate(Left(rs("datum"),10))
If datum = idag Then
Response.write "Idag"
ElseIf datum = igar Then
Response.write "Igår"
Else
Response.write cdate(Left(rs("datum"),10))
End If
voigtann1 skrev:
Kan kanske använda: http://www.webforum.nu/showthread.php?t=43454 ?
Eller om du vill använda dig av koden ovan, lägg det i en funktion:
Function DisplayDate(datum)
select case cdate(FormatDateTime(datum,vbShortDate))
case date()
DisplayDate = "Idag " & FormatDateTime(datum, vbShortTime)
case dateadd("d",-1, date())
DisplayDate = "Igår " & FormatDateTime(datum, vbShortTime)
case else
DisplayDate = FormatDateTime(datum,vbLongDate)
end select
End Function
Och anropar den med DisplayDate(RSForum_REPLY("T_LAST_POST"))
Jag testade din funktion och fick
Jag använder MySQL och T_LAST_POST är i definerat som VarChar(14). Kan det ha att göra med det då jag får följande fel: Invalid procedure call or argument: 'FormatDateTime' och den pekar på raden: select case cdate(FormatDateTime(datum,vbShortDate))
Jag tolkar det som att den inte gillar att den är formaterad som VarChar eller är jag fel ute?
Tyvärr har du en extremt dålig databas design om du har ställt in att ett datum är en sträng, men du kan testa Biasses kod för att formatera strängen till ett datum innan du slänger in det i funktionen:
datum = cdate(Left(rs("datum"),10))