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


Veckans nöt #7... aka "gör min hemläxa"

Postades av 2004-11-16 19:54:19 - Roger Alsing, i forum systemutveckling generellt, Tråden har 6 Kommentarer och lästs av 1155 personer

Jag kanske fått hjärnblödning men råkade iaf på en sak idag som jag tror är lurig.

skriv en rutin i valfritt språk som räknar fram första bästa dag i intervallet utifrån ett datum

input:
VeckoIntervall - heltal (intervall i veckor)
StartVecka - heltal (veckonr från när intervallet börjar)
VeckoDagNr - heltal (dag nummer , 1-7 för mån till sön)
InDatum - datum

output:
UtDatum -datum


tex:

startvecka = 2
veckointervall = 4
veckodagnr = 3 (onsdag)
indatum = '2004-11-16'

utdatum = '2004-12-08' (<-om jag inte räknar helt fel själv här :P)

alltså , utdatum ska vara första dagen i det givna intervallet som inträffar efter indatumet.
självklart ska utdatum bli samma oavsett vilket datum vi matar in som är innan 2004-12-08


//Roger


Svara

Sv: Veckans nöt #7... aka "gör min hemläxa"

Postades av 2004-11-16 21:56:23 - Simon Dahlbacka

vad är alltså sambandet mellan startvecka och indatum?


Svara

Sv: Veckans nöt #7... aka "gör min hemläxa"

Postades av 2004-11-16 22:40:59 - Roger Alsing

startvecka är vilken vecka som intervallet börjar på
tex start vecka 2 och intervalllängd 4 veckor
dvs de veckor som matchar är då:

2 6 10 14 18 22 ..... 42 46 50

säg att det är vecka 43 nu (vilket vi kan få fram från indatum)
så är nästa första intervall vecka "46"

och då ska vi ta reda på vilket datum tex onsdag vecka 46 är..

//Roger




Svara

Sv: Veckans nöt #7... aka "gör min hemläxa"

Postades av 2004-11-16 23:08:29 - Simon Dahlbacka

borde inte vara så svårt, men har inte reglerna när veckan börjar i huvudet, så där stannade det, resten torde vara rätt enkelt.. får fortsätta en annan gång


Svara

Sv: Veckans nöt #7... aka "gör min hemläxa"

Postades av 2004-11-17 09:34:39 - Martin Adrian

<code>
using namespace boost::gregorian;

date nut7(const date& InDatum, int VeckoIntervall, int StartVecka, int VeckoDagNr) {
// nextday är lika med första VeckoDagNr efter indatum
date nextDay = first_day_of_the_week_after(VeckoDagNr % 7).get_date(InDatum);

// nextWeekNo = antal veckor till nästa giltiga vecka
int nextWeekNo = (nextDay.week_number() + VeckoIntervall - StartVecka - 1) / VeckoIntervall * VeckoIntervall + StartVecka - nextDay.week_number();

// Kolla årsskifte
if (nextDay.year() != (nextDay + 7*nextWeekNo).year()) {
// Nytt år: flytta nextDay till första VeckodagNr i vecka 1 nästa år
// Vecka 1 är första veckan med en torsdag
nextDay = first_day_of_the_week_after(Thursday).get_date(date(InDatum.year(), Dec, 31)) - 4 + VeckoDagNr; // ingen % 7 här eftersom söndag innebär en vecka framåt
nextWeekNo = StartVecka - 1;
}
return nextDay + 7 * nextWeekNo;
}
</code>


Svara

Sv: Veckans nöt #7... aka "gör min hemläxa"

Postades av 2004-11-17 14:17:25 - Jan Bulér

Bidrar med ett par VB lösningar (mer eller mindre bra)

<code>
Function getDate(ByVal InDate As Date, ByVal StartWeek As Integer, ByVal WeekIntervall As Integer, ByVal WeekDayNo As Integer) As Date
Dim lngStartDate As Long
Dim lngTempDate As Long
Dim lngIntervall As Long
Dim lngInDate As Long
Dim lngPeriod As Long
Dim dtDate As Date
Dim lngWeek As Long
Dim lngEndDate As Long

dtDate = DateAdd("d", WeekDayNo - WeekDay(InDate, vbMonday), InDate)
lngWeek = Format(dtDate, "ww", vbMonday, vbFirstFourDays)

lngTempDate = CLng(dtDate)
lngInDate = CLng(InDate)
lngStartDate = lngTempDate - ((lngWeek - StartWeek) * 7)
lngIntervall = WeekIntervall * 7

lngPeriod = (lngTempDate - lngStartDate) / lngIntervall

lngEndDate = lngStartDate + (lngPeriod * lngIntervall)
If lngEndDate < lngInDate Then
lngEndDate = lngEndDate + lngIntervall
End If

getDate = CDate(lngEndDate)

End Function
</code>

<code>
Function getDate2(ByVal InDate As Date, ByVal StartWeek As Integer, ByVal WeekIntervall As Integer, ByVal WeekDayNo As Integer) As Date
Dim StartDate As Date
Dim tmpDate As Date
Dim tempWeek 'As Long
Dim EndDate As Date

tmpDate = DateAdd("d", WeekDayNo - WeekDay(InDate, vbMonday), InDate)
tempWeek = Format(tmpDate, "ww", vbMonday, vbFirstFourDays)
StartDate = DateAdd("ww", StartWeek - tempWeek, tmpDate)

EndDate = DateAdd("ww", WeekIntervall, StartDate)
Do While EndDate < InDate
EndDate = DateAdd("ww", WeekIntervall, EndDate)
Loop

getDate2 = EndDate

End Function

</code>

//
Janne


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 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

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 786
27 960
271 761
724
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