Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


week() i javascript

Postades av 2005-02-23 19:25:54 - Michael Dahlander, i forum javascript/dhtml, Tråden har 5 Kommentarer och lästs av 1175 personer

Hej!

Jag vill alltså få veckonumret ur ett datum och denna frågan har säkert kommit upp tidigare men jag hittar inget här på pellesoft. De lösningar jag hittar på internet ger alla fel värde. De stämmer för något år men inte för andra. Någon som har ett kort script som fungerar?

mvh
/Michael


Svara

Sv: week() i javascript

Postades av 2005-02-25 20:26:42 - Pelle Johansson

Ett sätt:

<code>
<script type="text/javascript" language="JavaScript"><!--
function y2k(number) { return (number < 1000) ? number + 1900 : number; }

function getWeek(year,month,day) {
var when = new Date(year,month,day);
var newYear = new Date(year,0,1);
var modDay = newYear.getDay();
if (modDay == 0) modDay=6; else modDay--;

var daynum = ((Date.UTC(y2k(year),when.getMonth(),when.getDate(),0,0,0) -
Date.UTC(y2k(year),0,1,0,0,0)) /1000/60/60/24) + 1;

if (modDay < 4 ) {
var weeknum = Math.floor((daynum+modDay-1)/7)+1;
}
else {
var weeknum = Math.floor((daynum+modDay-1)/7);
if (weeknum == 0) {
year--;
var prevNewYear = new Date(year,0,1);
var prevmodDay = prevNewYear.getDay();
if (prevmodDay == 0) prevmodDay = 6; else prevmodDay--;
if (prevmodDay < 4) weeknum = 53; else weeknum = 52;
}
}

return + weeknum;
}

var now = new Date();
document.write('Week number = ' +
getWeek(y2k(now.getYear()),now.getMonth(),now.getDate()));
//--></script>

</code>


Svara

Sv: week() i javascript

Postades av 2005-02-25 22:40:50 - Per Persson

Mitt förslag:

function getISOWeek(date)
{
	// Nyårsdagen
	var firstDayOfYear = new Date(date.getFullYear(), 0, 1);

	// Nyårsdagens veckodag (0 = måndag, ..., 6 = söndag)
	var firstWeekDay = (6 + firstDayOfYear.getDay()) % 7;

	// Dagnummer (nyårsdagen = 0)
	var dayNo = Math.floor((date - firstDayOfYear)/(24*60*60*1000));

	// Preliminärt veckonummer
	var weekNo = 1 + Math.floor((dayNo+firstWeekDay)/7);

	// Om nyårsdagens vecka har färre än 4 dagar detta år
	// (nyårsdagen är fre, lör eller sön)
	// ligger nyårsdagen inte i vecka v. 1.
	if(firstWeekDay >= 4)
		weekNo--;

	// Om veckonumret nu är 0, är vi i föregående års sista vecka
	if(weekNo == 0)
		weekNo = getISOWeek(new Date(date.getFullYear()-1, 12, 31));

	return weekNo;
}

Varning: Skicka inte en tidpunkt kring 2-3 på natten till funktionen. Det kan bli problem efter omställningen till sommartid. Detta borde iofs gå att kompensera för i funktionen.


Svara

Sv:week() i javascript

Postades av 2005-02-27 20:05:28 - Michael Dahlander

Hej!

Tack för era förslag men jag gick över till vbscript som har en färdig funktion för detta. Nog är vbscript enklare att manipulera datum med än javascript. Om man vill få en datum fem dagar senare skriver man

vb: newdate = olddate + 5
java: newdate = new Date(olddate.getYear(), olddate.getMonth(), olddate.getDate()+5);

mvh
/Michael

ps Pelle: Detta var en av dem jag hittade på internet. Tänkte inte då på att månad ska vara mellan 0-11.
ps Per: Din verkar inte fungera. 2005-01-02 blir vecka 5.


Svara

Sv: week() i javascript

Postades av 2005-02-27 20:12:39 - Per Persson

<b>ps Per: Din verkar inte fungera. 2005-01-02 blir vecka 5.</b>

Det var samma sak som du har råkat göra... Jag hade satt månadsnumret som 12 för december. Det skall ju vara 11.

Ändra till

	if(weekNo == 0)
		weekNo = getISOWeek(new Date(date.getFullYear()-1, 11, 31));



Om du använder VBScript, tänk på att det inte fungerar i t.ex. Firefox.


Svara

Sv:week() i javascript

Postades av 2005-02-27 20:14:28 - Michael Dahlander

ok


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 721
27 958
271 751
5 792
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies