none
Switch / TimeSpan RRS feed

  • Frage

  • Guten Abend

    Ich habe die folgenden Zeilen:

    	# Switch					28 {$Usonne = "05:00, 20:21, 15:21"}
    						29 {$Usonne = "05:01, 20:20, 15:18"}
    						30 {$Usonne = "05:03, 20:18, 15:15"}
    						31 {$Usonne = "05:04, 20:17, 15:12"}
    
    # 29 Juli [20:20]
    $Usonne.Split(",")[1].trim()
    # 30 Juli [05:03]
    $Usonne.Split(",")[0].trim()
    
    Frage: Wie lange ist die Zeitdauer?
    
    # TimeSpan, als normale Benützung. Ok.
    $TimeSpan =  [timespan]::fromseconds((New-TimeSpan -Start $Usonne.Split(",")[1].trim() -End $Usonne.Split(",")[0].trim()).TotalSeconds)
    $Time = $TimeSpan.ToString("hh\:mm")
    $global:Time
    # 15:19
    
    Aber ich brauche den Zeitunterschied von 2 Tagen.
    Split 1 - Split 0 vom nächsten Tag...
    
    Danke für Ihre Hilfe im voraus,
    Arnold
    
    

    Freitag, 29. Juli 2016 19:59

Antworten

  • Hallo,

    ich habe ja schon in meiner ersten Antwort geschrieben dass du mit dem Switch so nicht weiterkommst, sondern die Daten in ein Array müssen,  bei der Menge, wenn das dein ernst ist, empfehle ich dir diese gleich in eine Datenbank zu packen.

    Dann kannst Du über die Powershell die Daten für den gewünschten Tag/FolgeTag berechnen.

    Oder dann doch gleich alles mit der PowerShell berechnen und die DB füllen für deinen 2.000 Jahre Zeitraum.

    Dann brauchst Du für die Nachwelt nur noch ein einfaches Script schreiben, dass die Daten für den gewünschten Zeitraum ausliest.

    Dabei ist aber zu beachten, dass sich z.B.: durch Erdbeben usw. sich die Erdachse verschieben kann, was sich dann auch auf die berechneten Zeiten auswirken würde ...

    Beste Gruesse
    brima

    • Als Antwort markiert arnold_ Freitag, 5. August 2016 07:01
    Freitag, 29. Juli 2016 22:17
  • Guten Tag,

    So geht es .... mit xml.

    Sonne-UA

    Der scripte dazu:

    cls
    
    $Oyears1 = [datetime]::Today.Year
    $Oyears2 = (Get-date).AddYears(1).ToString('yyyy')
    $Oyears3 = [datetime]::IsLeapYear($Oyears1)
    
    [int]$Odays1 = get-date -f "dd"
    [int]$Odays2 = (Get-date).Adddays(1).ToString('dd')
    
    [int]$Omonths1 = get-date -f "MM"
    [int]$Omonths2 = (Get-date).AddMonths(1).ToString('MM')
    
    $Otext = [string] "#text"
    # a=Sunset, u=SunRais, u=NightLength 
    $Opath = "......\sonne-D.xml"
    $OSun_D = New-Object System.Xml.XmlDocument
    $OSun_D.Load($Opath)
    
    # Sunset: end month = 31,30,28 + Today.Year
    if(( $Odays1 -eq 31 ) -or ( $Odays1 -eq 28 ) -or ( $Odays1 -eq 30 ) -and ( $Oyears1 -eq [datetime]::Today.Year )){
    $OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths2 + "/tag" + $Odays2 + "/@a" ).$Otext}
    
    # Sunset: end month = 31,30,28 + AddYears(1) -eq Today.Year
    elseif(( $Odays1 -eq 31 ) -or ( $Odays1 -eq 28 ) -or ( $Odays1 -eq 30 ) -and ( $Oyears2 -eq [datetime]::Today.Year )){
    $OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths2 + "/tag" + $Odays2 + "/@a" ).$Otext}
    
    # Sunset: end month = 31,30,29 + Today.Year $Frue + IsLeapYear
    elseif (( $Odays1 -eq 31 ) -or ( $Odays1 -eq 29 ) -or ( $Odays1 -eq 30 ) -and ( $Oyears3 -eq $false ) -and ( $Oyears1 -eq [datetime]::Today.Year )){
    $OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths2 + "/tag" + $Odays2 + "/@a" ).$Otext}
    
    # Sunset: end month = 31,30,29 + Today.Year $False + IsLeapYear + AddYears(1)
    elseif (( $Odays1 -eq 31 ) -or ( $Odays1 -eq 29 ) -or ( $Odays1 -eq 30 ) -and ( $Oyears3 -eq $false ) -and ( $Oyears2 -eq [datetime]::Today.Year )){
    $OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths2 + "/tag" + $Odays2 + "/@a" ).$Otext}
    
    # Sunrise: standart
    else {($OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths1 + "/tag" + $Odays2 + "/@a" ).$Otext)}
    
    # SunRais: standart
    $OSunRise = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths1 + "/tag" + $Odays1 + "/@u" ).$Otext
    
    $global:Time = [timespan]::fromseconds(( New-TimeSpan -Start $OSunRise -End $OSunSet ).TotalSeconds ).ToString("hh\:mm")
    $global:Time
    
    clear-variable O* -scope global -f

    Was Denken Sie?

    Danke

    @r

    • Als Antwort markiert arnold_ Freitag, 5. August 2016 07:00
    Dienstag, 2. August 2016 16:49

Alle Antworten

  • Moin,

    entweder einfach 86400 Sekunden dazu addieren, oder bei Start und End neben Uhrzeit auch das Datum verwenden (zumindest die Tageszahl hast Du ja im Switch, und da es bei der Differenz auf den konkereten Monat nicht ankommt, kannst Du einen nehmen, der 31 Tage hat, und gut...

    Wo kommen denn die Daten her? Kann man das komplette Datum vielleicht schin aus der Quelle mit auslesen?


    Evgenij Smirnov

    msg services ag, Berlin -> http://www.msg-services.de
    my personal blog (mostly German) -> http://it-pro-berlin.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    In theory, there is no difference between theory and practice. In practice, there is.

    Freitag, 29. Juli 2016 21:17
  • Hallo,

    also wenn ich es richtig verstehe willst Du den Zeitraum zwischen Sonnenuntergang und Sonnenaufgang des Folgetages berechnen?

    Was willst Du mit dem Switch? Dort wird je nach Tag die Variabel $Usonne mit den Daten dieses Tages belegt, du brauchst aber auch die Daten des nächsten Tages, also konkret den Sonnenuntergang des gewählten Tages und Sonnenaufgang des Folgetages. Auf Grund dieser Tatsache sollten die Werte der einzelnen Tage in einem Array stehen

    Du erhältst das Ergebnis 15:19 in Wirklichkeit -15.19, weil deine -start Zeit 20:20 größer ist ist wie die -End Zeit  05:01 (!)

    Die PowerShell hat keine Ahnung davon, dass es dir um einen "Tageswechsel" geht, d.h. du musst New-TimeSpan dann auch mit DateTime Objekten versorgen, nicht nur mit der Zeit.

    Kleines einfaches Beispiel:

    $SUTag = Get-Date ("28.07.2016 20:21")
    $SAFolgeTag = Get-Date ("29.07.2016 05:01")
    $Time = (New-TimeSpan -Start $SUTag -End $SAFolgeTag).ToString("hh\:mm")
    $Time
    Das sollte Dir hoffentlich weiterhelfen.

    Beste Gruesse
    Martin


    • Bearbeitet brima Freitag, 29. Juli 2016 21:38
    Freitag, 29. Juli 2016 21:29
  • Guten Abend,

    Danke für Ihre schnelle !! Antwort.

    Mal der Reihe nach.

    - Es sind Uhrzeiten ( Sonnenaufgang, Untergang, Tageslängen: epoche 2016, für Khatkiv; vorläufig als test.

    - Der switch gibt mir nur "eine" Antwort für einen "TAG". Ich könnte ohne weiteres den scripte ein zweites mal mit einen 2 Namen Angeben mit einen "add(1)".  (Die einfachste Möglichkeit) und die Antworten als global  varibeln weiter benützen... Zu beachten: ich brauche 2 datensetze von 2 verschiedene Tagen .....

    - Der time-span gibt mit die nächste "Nachtlänge" (Damit kann man die 3 verschiedene twiligth berechnen. Kein zauber.). In diesen fall die einfachste berechnung ist: Horizon/Horizon.

    Vielleicht gibt es etwas mit doppelten variablen .... oder eine fonction ...

    Danke,

    Arnold

    Hier der scripte: als Anhang

    # UTC+3		
    CLS
    $Uday = get-date -format "dddd"
    $Umonth = get-date -format "MMMM"
    $Uday1 = get-date
    
    $Umonth = get-date -f "MMMM"
    
     switch ($Umonth.tostring())
    	{
    		{
    		$Umonth -contains "Janvier"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						1 {$Usonne = "07:34, 15:42, 08:08"}
    						2 {$Usonne = "07:34, 15:43, 08:09"}
    						3 {$Usonne = "07:34, 15:44, 08:10"}
    						4 {$Usonne = "07:33, 15:45, 08:11"}
    						5 {$Usonne = "07:33, 15:46, 08:13"}
    						6 {$Usonne = "07:33, 15:47, 08:14"}
    						7 {$Usonne = "07:33, 15:49, 08:16"}
    						8 {$Usonne = "07:32, 15:50, 08:17"}
    						9 {$Usonne = "07:32, 15:51, 08:19"}
    						10 {$Usonne = "07:31, 15:52, 08:21"}
    						11 {$Usonne = "07:31, 15:54, 08:22"}
    						12 {$Usonne = "07:30, 15:55, 08:24"}
    						13 {$Usonne = "07:30, 15:57, 08:26"}
    						14 {$Usonne = "07:29, 15:58, 08:28"}
    						15 {$Usonne = "07:28, 15:59, 08:31"}
    						16 {$Usonne = "07:28, 16:01, 08:33"}
    						17 {$Usonne = "07:27, 16:02, 08:35"}
    						18 {$Usonne = "07:26, 16:04, 08:37"}
    						19 {$Usonne = "07:25, 16:05, 08:40"}
    						20 {$Usonne = "07:24, 16:07, 08:42"}
    						21 {$Usonne = "07:23, 16:09, 08:45"}
    						22 {$Usonne = "07:22, 16:10, 08:48"}
    						23 {$Usonne = "07:21, 16:12, 08:50"}
    						24 {$Usonne = "07:20, 16:13, 08:53"}
    						25 {$Usonne = "07:19, 16:15, 08:56"}
    						26 {$Usonne = "07:18, 16:17, 08:59"}
    						27 {$Usonne = "07:16, 16:18, 09:01"}
    						28 {$Usonne = "07:15, 16:20, 09:04"}
    						29 {$Usonne = "07:14, 16:22, 09:07"}
    						30 {$Usonne = "07:13, 16:23, 09:10"}
    						31 {$Usonne = "07:11, 16:25, 09:13"}
    					}                                              
    			}
    		{
    		$Umonth -contains "Février"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# Februar 2016			
    						1 {$Usonne = "07:10, 16:27, 09:16"}
    						2 {$Usonne = "07:08, 16:28, 09:20"}
    						3 {$Usonne = "07:07, 16:30, 09:23"}
    						4 {$Usonne = "07:05, 16:32, 09:26"}
    						5 {$Usonne = "07:04, 16:34, 09:29"}
    						6 {$Usonne = "07:02, 16:35, 09:32"}
    						7 {$Usonne = "07:01, 16:37, 09:36"}
    						8 {$Usonne = "06:59, 16:39, 09:39"}
    						9 {$Usonne = "06:58, 16:40, 09:42"}
    						10 {$Usonne = "06:56, 16:42, 09:46"}
    						11 {$Usonne = "06:54, 16:44, 09:49"}
    						12 {$Usonne = "06:52, 16:46, 09:53"}
    						13 {$Usonne = "06:51, 16:47, 09:56"}
    						14 {$Usonne = "06:49, 16:49, 10:00"}
    						15 {$Usonne = "06:47, 16:51, 10:03"}
    						16 {$Usonne = "06:45, 16:53, 10:07"}
    						17 {$Usonne = "06:44, 16:54, 10:10"}
    						18 {$Usonne = "06:42, 16:56, 10:14"}
    						19 {$Usonne = "06:40, 16:58, 10:17"}
    						20 {$Usonne = "06:38, 16:59, 10:21"}
    						21 {$Usonne = "06:36, 17:01, 10:25"}
    						22 {$Usonne = "06:34, 17:03, 10:28"}
    						23 {$Usonne = "06:32, 17:04, 10:32"}
    						24 {$Usonne = "06:30, 17:06, 10:35"}
    						25 {$Usonne = "06:28, 17:08, 10:39"}
    						26 {$Usonne = "06:26, 17:10, 10:43"}
    						27 {$Usonne = "06:24, 17:11, 10:46"}
    						28 {$Usonne = "06:22, 17:13, 10:50"}
    						29 {$Usonne = "06:20, 17:15, 10:54"}
    					}
    			}
    		{
    		$Umonth -contains "Mars"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# März 2016			
    						1 {$Usonne = "06:18, 17:16, 10:57"}
    						2 {$Usonne = "06:16, 17:18, 11:01"}
    						3 {$Usonne = "06:14, 17:19, 11:05"}
    						4 {$Usonne = "06:12, 17:21, 11:09"}
    						5 {$Usonne = "06:10, 17:23, 11:12"}
    						6 {$Usonne = "06:08, 17:24, 11:16"}
    						7 {$Usonne = "06:06, 17:26, 11:20"}
    						8 {$Usonne = "06:04, 17:28, 11:24"}
    						9 {$Usonne = "06:01, 17:29, 11:27"}
    						10 {$Usonne = "05:59, 17:31, 11:31"}
    						11 {$Usonne = "05:57, 17:32, 11:35"}
    						12 {$Usonne = "05:55, 17:34, 11:39"}
    						13 {$Usonne = "05:53, 17:36, 11:42"}
    						14 {$Usonne = "05:51, 17:37, 11:46"}
    						15 {$Usonne = "05:49, 17:39, 11:50"}
    						16 {$Usonne = "05:46, 17:41, 11:54"}
    						17 {$Usonne = "05:44, 17:42, 11:57"}
    						18 {$Usonne = "05:42, 17:44, 12:01"}
    						19 {$Usonne = "05:40, 17:45, 12:05"}
    						20 {$Usonne = "05:38, 17:47, 12:09"}
    						21 {$Usonne = "05:36, 17:48, 12:12"}
    
    						22 {$Usonne = "05:33, 17:50, 12:16"}
    						23 {$Usonne = "05:31, 17:52, 12:20"}
    						24 {$Usonne = "05:29, 17:53, 12:24"}
    						25 {$Usonne = "05:27, 17:55, 12:27"}
    						26 {$Usonne = "05:25, 17:56, 12:31"}
    						27 {$Usonne = "06:23, 18:58, 12:35"}
    						28 {$Usonne = "06:20, 18:59, 12:39"}
    						29 {$Usonne = "06:18, 19:01, 12:42"}
    						30 {$Usonne = "06:16, 19:03, 12:46"}
    						31 {$Usonne = "06:14, 19:04, 12:50"}
    					}
    			}
    		{
    		$Umonth -contains "Avril"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# April 2016			
    						1 {$Usonne = "06:12, 19:06, 12:53"}
    						2 {$Usonne = "06:10, 19:07, 12:57"}
    						3 {$Usonne = "06:07, 19:09, 13:01"}
    						4 {$Usonne = "06:05, 19:10, 13:05"}
    						5 {$Usonne = "06:03, 19:12, 13:08"}
    						6 {$Usonne = "06:01, 19:14, 13:12"}
    						7 {$Usonne = "05:59, 19:15, 13:16"}
    						8 {$Usonne = "05:57, 19:17, 13:19"}
    						9 {$Usonne = "05:55, 19:18, 13:23"}
    						10 {$Usonne = "05:53, 19:20, 13:27"}
    						11 {$Usonne = "05:51, 19:21, 13:30"}
    						12 {$Usonne = "05:48, 19:23, 13:34"}
    						13 {$Usonne = "05:46, 19:25, 13:38"}
    						14 {$Usonne = "05:44, 19:26, 13:41"}
    						15 {$Usonne = "05:42, 19:28, 13:45"}
    						16 {$Usonne = "05:40, 19:29, 13:48"}
    						17 {$Usonne = "05:38, 19:31, 13:52"}
    						18 {$Usonne = "05:36, 19:32, 13:56"}
    						19 {$Usonne = "05:34, 19:34, 13:59"}
    						20 {$Usonne = "05:32, 19:35, 14:03"}
    						21 {$Usonne = "05:30, 19:37, 14:06"}
    						22 {$Usonne = "05:28, 19:39, 14:10"}
    						23 {$Usonne = "05:26, 19:40, 14:13"}
    						24 {$Usonne = "05:25, 19:42, 14:17"}                              
    						25 {$Usonne = "05:23, 19:43, 14:20"}
    						26 {$Usonne = "05:21, 19:45, 14:24"}
    						27 {$Usonne = "05:19, 19:46, 14:27"}
    						28 {$Usonne = "05:17, 19:48, 14:30"}
    						29 {$Usonne = "05:15, 19:49, 14:34"}
    						30 {$Usonne = "05:13, 19:51, 14:37"}
    					}
    			}
    		{
    		$Umonth -contains "Mai"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# Mai 2016			
    						1 {$Usonne = "05:12, 19:52, 14:40"}
    						2 {$Usonne = "05:10, 19:54, 14:44"}
    						3 {$Usonne = "05:08, 19:55, 14:47"}
    						4 {$Usonne = "05:06, 19:57, 14:50"}
    						5 {$Usonne = "05:05, 19:59, 14:53"}
    						6 {$Usonne = "05:03, 20:00, 14:56"}
    						7 {$Usonne = "05:02, 20:02, 14:59"}
    						8 {$Usonne = "05:00, 20:03, 15:03"}
    						9 {$Usonne = "04:58, 20:04, 15:06"}
    						10 {$Usonne = "04:57, 20:06, 15:09"}
    						11 {$Usonne = "04:55, 20:07, 15:12"}
    						12 {$Usonne = "04:54, 20:09, 15:15"}
    						13 {$Usonne = "04:52, 20:10, 15:17"}
    						14 {$Usonne = "04:51, 20:12, 15:20"}
    						15 {$Usonne = "04:50, 20:13, 15:23"}
    						16 {$Usonne = "04:48, 20:14, 15:26"}
    						17 {$Usonne = "04:47, 20:16, 15:28"}
    						18 {$Usonne = "04:46, 20:17, 15:31"}
    						19 {$Usonne = "04:44, 20:19, 15:34"}
    						20 {$Usonne = "04:43, 20:20, 15:36"}
    						21 {$Usonne = "04:42, 20:21, 15:39"}
    						22 {$Usonne = "04:41, 20:22, 15:41"}
    						23 {$Usonne = "04:40, 20:24, 15:44"}
    						24 {$Usonne = "04:39, 20:25, 15:46"}
    						25 {$Usonne = "04:38, 20:26, 15:48"}
    						26 {$Usonne = "04:37, 20:27, 15:50"}
    						27 {$Usonne = "04:36, 20:28, 15:52"}
    						28 {$Usonne = "04:35, 20:30, 15:54"}
    						29 {$Usonne = "04:34, 20:31, 15:56"}
    						30 {$Usonne = "04:33, 20:32, 15:58"}
    						31 {$Usonne = "04:32, 20:33, 16:00"}
    					}
    			}
    		{
    		$Umonth -contains "Juin"
    		}
    			{
    				switch ($Uday1.day)
    					{						
    						# Juni 2016			
    						1 {$Usonne = "04:32, 20:34, 16:02"}
    						2 {$Usonne = "04:31, 20:35, 16:04"}
    						3 {$Usonne = "04:30, 20:36, 16:05"}
    						4 {$Usonne = "04:30, 20:37, 16:07"}
    						5 {$Usonne = "04:29, 20:38, 16:08"}
    						6 {$Usonne = "04:29, 20:38, 16:09"}
    						7 {$Usonne = "04:28, 20:39, 16:11"}
    						8 {$Usonne = "04:28, 20:40, 16:12"}
    						9 {$Usonne = "04:27, 20:41, 16:13"}
    						10 {$Usonne = "04:27, 20:41, 16:14"}
    						11 {$Usonne = "04:27, 20:42, 16:15"}
    						12 {$Usonne = "04:26, 20:43, 16:16"}
    						13 {$Usonne = "04:26, 20:43, 16:16"}
    						14 {$Usonne = "04:26, 20:44, 16:17"}
    						15 {$Usonne = "04:26, 20:44, 16:18"}
    						16 {$Usonne = "04:26, 20:45, 16:18"}
    						17 {$Usonne = "04:26, 20:45, 16:19"}
    						18 {$Usonne = "04:26, 20:45, 16:19"}
    						19 {$Usonne = "04:26, 20:46, 16:19"}
    						20 {$Usonne = "04:26, 20:46, 16:19"}
    						21 {$Usonne = "04:27, 20:46, 16:19"}
    						22 {$Usonne = "04:27, 20:46, 16:19"}
    						23 {$Usonne = "04:27, 20:46, 16:19"}
    						24 {$Usonne = "04:27, 20:47, 16:19"}
    						25 {$Usonne = "04:28, 20:47, 16:18"}
    						26 {$Usonne = "04:28, 20:46, 16:18"}
    						27 {$Usonne = "04:29, 20:46, 16:17"}
    						28 {$Usonne = "04:29, 20:46, 16:17"}
    						29 {$Usonne = "04:30, 20:46, 16:16"}
    						30 {$Usonne = "04:30, 20:46, 16:15"}
    					}
    			}
    		{
    		$Umonth -contains "Juillet"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# Juli 2016			
    						1 {$Usonne = "04:31, 20:46, 16:14"}
    						2 {$Usonne = "04:32, 20:45, 16:13"}
    						3 {$Usonne = "04:32, 20:45, 16:12"}
    						4 {$Usonne = "04:33, 20:44, 16:11"}
    						5 {$Usonne = "04:34, 20:44, 16:10"}
    						6 {$Usonne = "04:35, 20:43, 16:08"}
    						7 {$Usonne = "04:36, 20:43, 16:07"}
    						8 {$Usonne = "04:37, 20:42, 16:05"}
    						9 {$Usonne = "04:37, 20:42, 16:04"}
    						10 {$Usonne = "04:38, 20:41, 16:02"}
    						11 {$Usonne = "04:39, 20:40, 16:00"}
    						12 {$Usonne = "04:40, 20:39, 15:58"}
    						13 {$Usonne = "04:41, 20:39, 15:57"}
    						14 {$Usonne = "04:43, 20:38, 15:55"}
    						15 {$Usonne = "04:44, 20:37, 15:53"}
    						16 {$Usonne = "04:45, 20:36, 15:51"}
    						17 {$Usonne = "04:46, 20:35, 15:48"}
    						18 {$Usonne = "04:47, 20:34, 15:46"}
    						19 {$Usonne = "04:48, 20:33, 15:44"}
    						20 {$Usonne = "04:49, 20:32, 15:42"}
    						21 {$Usonne = "04:51, 20:30, 15:39"}
    						22 {$Usonne = "04:52, 20:29, 15:37"}
    						23 {$Usonne = "04:53, 20:28, 15:34"}
    						24 {$Usonne = "04:55, 20:27, 15:32"}
    						25 {$Usonne = "04:56, 20:25, 15:29"}
    						26 {$Usonne = "04:57, 20:24, 15:26"}
    						27 {$Usonne = "04:59, 20:23, 15:24"}
    						28 {$Usonne = "05:00, 20:21, 15:21"}
    						29 {$Usonne = "05:01, 20:20, 15:18"}
    						30 {$Usonne = "05:03, 20:18, 15:15"}
    						31 {$Usonne = "05:04, 20:17, 15:12"}
    					}
    			}
    		{
    		$Umonth -contains "Août"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# August 2016									
    						1 {$Usonne = "05:05, 20:15, 15:09"}
    						2 {$Usonne = "05:07, 20:14, 15:06"}
    						3 {$Usonne = "05:08, 20:12, 15:03"}
    						4 {$Usonne = "05:10, 20:11, 15:00"}
    						5 {$Usonne = "05:11, 20:09, 14:57"}
    						6 {$Usonne = "05:13, 20:07, 14:54"}
    						7 {$Usonne = "05:14, 20:06, 14:51"}
    						8 {$Usonne = "05:15, 20:04, 14:48"}
    						9 {$Usonne = "05:17, 20:02, 14:45"}
    						10 {$Usonne = "05:18, 20:00, 14:41"}
    						11 {$Usonne = "05:20, 19:58, 14:38"}
    						12 {$Usonne = "05:21, 19:57, 14:35"}
    						13 {$Usonne = "05:23, 19:55, 14:32"}
    						14 {$Usonne = "05:24, 19:53, 14:28"}
    						15 {$Usonne = "05:26, 19:51, 14:25"}
    						16 {$Usonne = "05:27, 19:49, 14:22"}
    						17 {$Usonne = "05:29, 19:47, 14:18"}
    						18 {$Usonne = "05:30, 19:45, 14:15"}
    						19 {$Usonne = "05:32, 19:43, 14:11"}
    						20 {$Usonne = "05:33, 19:41, 14:08"}
    						21 {$Usonne = "05:35, 19:39, 14:04"}
    						22 {$Usonne = "05:36, 19:37, 14:01"}
    						23 {$Usonne = "05:38, 19:35, 13:57"}
    						24 {$Usonne = "05:39, 19:33, 13:54"}
    						25 {$Usonne = "05:41, 19:31, 13:50"}
    						26 {$Usonne = "05:42, 19:29, 13:47"}
    						27 {$Usonne = "05:44, 19:27, 13:43"}
    						28 {$Usonne = "05:45, 19:25, 13:40"}
    						29 {$Usonne = "05:46, 19:23, 13:36"}
    						30 {$Usonne = "05:48, 19:21, 13:33"}
    						31 {$Usonne = "05:49, 19:19, 13:29"}
    					}
    			}
    		{
    		$Umonth -contains "Septembre"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# September 2016			
    						1 {$Usonne = "05:51, 19:17, 13:25"}
    						2 {$Usonne = "05:52, 19:15, 13:22"}
    						3 {$Usonne = "05:54, 19:13, 13:18"}
    						4 {$Usonne = "05:55, 19:10, 13:15"}
    						5 {$Usonne = "05:57, 19:08, 13:11"}
    						6 {$Usonne = "05:58, 19:06, 13:07"}
    						7 {$Usonne = "06:00, 19:04, 13:04"}
    						8 {$Usonne = "06:01, 19:02, 13:00"}
    						9 {$Usonne = "06:03, 19:00, 12:56"}
    						10 {$Usonne = "06:04, 18:57, 12:53"}
    						11 {$Usonne = "06:06, 18:55, 12:49"}
    						12 {$Usonne = "06:07, 18:53, 12:45"}
    						13 {$Usonne = "06:09, 18:51, 12:42"}
    						14 {$Usonne = "06:10, 18:49, 12:38"}
    						15 {$Usonne = "06:12, 18:46, 12:34"}
    						16 {$Usonne = "06:13, 18:44, 12:31"}
    						17 {$Usonne = "06:15, 18:42, 12:27"}
    						18 {$Usonne = "06:16, 18:40, 12:23"}
    						19 {$Usonne = "06:18, 18:38, 12:19"}
    						20 {$Usonne = "06:19, 18:35, 12:16"}
    						21 {$Usonne = "06:21, 18:33, 12:12"}
    						22 {$Usonne = "06:22, 18:31, 12:08"}
    						23 {$Usonne = "06:24, 18:29, 12:05"}
    						24 {$Usonne = "06:25, 18:27, 12:01"}
    						25 {$Usonne = "06:27, 18:24, 11:57"}
    						26 {$Usonne = "06:28, 18:22, 11:54"}
    						27 {$Usonne = "06:30, 18:20, 11:50"}
    						28 {$Usonne = "06:31, 18:18, 11:46"}
    						29 {$Usonne = "06:33, 18:16, 11:43"}
    						30 {$Usonne = "06:34, 18:14, 11:39"}
    					}
    			}
    		{
    		$Umonth -contains "Octobre"
    		}
    			{
    				switch ($Uday1.day)       
    					{
    						# Oktober 2016	
    						1 {$Usonne = "06:36, 18:11, 11:35"}
    						2 {$Usonne = "06:37, 18:09, 11:31"}
    						3 {$Usonne = "06:39, 18:07, 11:28"}
    						4 {$Usonne = "06:40, 18:05, 11:24"}
    						5 {$Usonne = "06:42, 18:03, 11:20"}
    						6 {$Usonne = "06:43, 18:01, 11:17"}
    						7 {$Usonne = "06:45, 17:59, 11:13"}
    						8 {$Usonne = "06:47, 17:56, 11:09"}
    						9 {$Usonne = "06:48, 17:54, 11:06"}
    						10 {$Usonne = "06:50, 17:52, 11:02"}
    						11 {$Usonne = "06:51, 17:50, 10:58"}
    						12 {$Usonne = "06:53, 17:48, 10:55"}
    						13 {$Usonne = "06:54, 17:46, 10:51"}
    						14 {$Usonne = "06:56, 17:44, 10:47"}                          
    						15 {$Usonne = "06:58, 17:42, 10:44"}
    						16 {$Usonne = "06:59, 17:40, 10:40"}
    						17 {$Usonne = "07:01, 17:38, 10:37"}
    						18 {$Usonne = "07:02, 17:36, 10:33"}
    						19 {$Usonne = "07:04, 17:34, 10:29"}
    						20 {$Usonne = "07:06, 17:32, 10:26"}
    						21 {$Usonne = "07:07, 17:30, 10:22"}
    						22 {$Usonne = "07:09, 17:28, 10:19"}
    						23 {$Usonne = "07:11, 17:26, 10:15"}
    						24 {$Usonne = "07:12, 17:24, 10:12"}
    						25 {$Usonne = "07:14, 17:23, 10:08"}
    						26 {$Usonne = "07:15, 17:21, 10:05"}
    						27 {$Usonne = "07:17, 17:19, 10:01"}
    						28 {$Usonne = "07:19, 17:17, 09:58"}
    						29 {$Usonne = "07:20, 17:15, 09:54"}
    						30 {$Usonne = "06:22, 16:14, 09:51"}
    						31 {$Usonne = "06:24, 16:12, 09:48"}
    					}
    			}
    		{
    		$Umonth -contains "Novembre"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# November 2016	
    						1 {$Usonne = "06:25, 16:10, 09:44"}
    						2 {$Usonne = "06:27, 16:08, 09:41"}
    						3 {$Usonne = "06:29, 16:07, 09:38"}
    						4 {$Usonne = "06:30, 16:05, 09:34"}
    						5 {$Usonne = "06:32, 16:04, 09:31"}
    						6 {$Usonne = "06:34, 16:02, 09:28"}
    						7 {$Usonne = "06:35, 16:00, 09:25"}
    						8 {$Usonne = "06:37, 15:59, 09:21"}
    						9 {$Usonne = "06:39, 15:57, 09:18"}
    						10 {$Usonne = "06:40, 15:56, 09:15"}
    						11 {$Usonne = "06:42, 15:55, 09:12"}
    						12 {$Usonne = "06:44, 15:53, 09:09"}
    						13 {$Usonne = "06:45, 15:52, 09:06"}
    						14 {$Usonne = "06:47, 15:51, 09:03"}
    						15 {$Usonne = "06:48, 15:49, 09:00"}
    						16 {$Usonne = "06:50, 15:48, 08:58"}
    						17 {$Usonne = "06:52, 15:47, 08:55"}
    						18 {$Usonne = "06:53, 15:46, 08:52"}
    						19 {$Usonne = "06:55, 15:45, 08:49"}
    						20 {$Usonne = "06:56, 15:44, 08:47"}
    						21 {$Usonne = "06:58, 15:43, 08:44"}
    						22 {$Usonne = "06:59, 15:42, 08:42"}
    						23 {$Usonne = "07:01, 15:41, 08:39"}
    						24 {$Usonne = "07:02, 15:40, 08:37"}
    						25 {$Usonne = "07:04, 15:39, 08:34"}
    						26 {$Usonne = "07:05, 15:38, 08:32"}
    						27 {$Usonne = "07:07, 15:37, 08:30"}                               
    						28 {$Usonne = "07:08, 15:37, 08:28"}
    						29 {$Usonne = "07:10, 15:36, 08:26"}
    						30 {$Usonne = "07:11, 15:35, 08:24"}
    					}
    			}
    		{
    		$Umonth -contains "Décembre"
    		}
    			{
    				switch ($Uday1.day)
    					{
    						# Dezember 2016			
    						1 {$Usonne = "07:12, 15:35, 08:22"}
    						2 {$Usonne = "07:14, 15:34, 08:20"}
    						3 {$Usonne = "07:15, 15:34, 08:18"}
    						4 {$Usonne = "07:16, 15:33, 08:17"}
    						5 {$Usonne = "07:17, 15:33, 08:15"}
    						6 {$Usonne = "07:18, 15:33, 08:14"}
    						7 {$Usonne = "07:20, 15:32, 08:12"}
    						8 {$Usonne = "07:21, 15:32, 08:11"}
    						9 {$Usonne = "07:22, 15:32, 08:10"}
    						10 {$Usonne = "07:23, 15:32, 08:09"}
    						11 {$Usonne = "07:24, 15:32, 08:08"}
    						12 {$Usonne = "07:25, 15:32, 08:07"}
    						13 {$Usonne = "07:26, 15:32, 08:06"}
    						14 {$Usonne = "07:26, 15:32, 08:05"}
    						15 {$Usonne = "07:27, 15:32, 08:04"}
    						16 {$Usonne = "07:28, 15:32, 08:04"}
    						17 {$Usonne = "07:29, 15:33, 08:03"}
    						18 {$Usonne = "07:29, 15:33, 08:03"}  
    						19 {$Usonne = "07:30, 15:33, 08:03"}
    						20 {$Usonne = "07:31, 15:34, 08:03"}
    						21 {$Usonne = "07:31, 15:34, 08:03"}
    						22 {$Usonne = "07:32, 15:35, 08:03"}
    						23 {$Usonne = "07:32, 15:35, 08:03"}
    						24 {$Usonne = "07:33, 15:36, 08:03"}
    						25 {$Usonne = "07:33, 15:37, 08:03"}
    						26 {$Usonne = "07:33, 15:37, 08:04"}
    						27 {$Usonne = "07:33, 15:38, 08:04"}
    						28 {$Usonne = "07:34, 15:39, 08:05"}
    						29 {$Usonne = "07:34, 15:40, 08:06"}
    						30 {$Usonne = "07:34, 15:41, 08:07"}
    						31 {$Usonne = "07:34, 15:42, 08:08"}
    					}
    			}
    		} 
    
    $global:Usonne1 = $Usonne.Split(",")[0].trim()
    $global:Usonne2 = $Usonne.Split(",")[1].trim()
    $global:Usonne3 = $Usonne.Split(",")[2].trim()
    $global:Usonne1
    $global:Usonne2
    $global:Usonne3
    
    $TimeSpan =  [timespan]::fromseconds((New-TimeSpan -Start $Usonne.Split(",")[1].trim() -End $Usonne.Split(",")[0].trim()).TotalSeconds)
    $Time = $TimeSpan.ToString("hh\:mm")
    $global:Time
    
    # U = UA
    clear-variable U* -scope global -f
    
    
    # Ein anderer Versuch:
    
    cls
    # NightLenght? 
    # First NightTime - DayTime next Day (ToMorrow) 
    # 		 SunUp,  SunDown, DayLenght
    $Dsun1 = "08:17, 16:01, 07:43"
    $Dsun2 = "08:17, 16:02, 07:44"
    
    $DimeSpan =  [timespan]::fromseconds((New-TimeSpan -Start $Dsun1.Split(",")[1].trim() -End $Dsun2.Split(",")[0].trim()).TotalSeconds)
    $DimeSpan.ToString("hh\:mm")
    
    clear-variable D* -scope global -f

    Freitag, 29. Juli 2016 21:46
  • Hallo,

    oha, also da würde ich Dir empfehlen doch gleich die Werte für Sonnenaufgang und Sonnenuntergang zu berechnen, das kann man recht genau für einen gewünschten Standort berechnen.

    Hier kannst Du dich einlesen:

    http://lexikon.astronomie.info/zeitgleichung/

    Beste Gruesse
    brima

    Freitag, 29. Juli 2016 21:52
  • Danke,

    Ich erkenne diese webseite, danke für den Link!

    Aber ich brauche die Daten auch als archive. (Nächsten 2 000 Jahre). Dan kann man sagen, dass die letzte eiszeit vor 10 000 Jahren war...Appoge. Dann sollte es wider abwerts gehen ->.  "aber das soll nicht hier das thema sein."

    Arnold

    Freitag, 29. Juli 2016 22:05
  • Hallo,

    ich habe ja schon in meiner ersten Antwort geschrieben dass du mit dem Switch so nicht weiterkommst, sondern die Daten in ein Array müssen,  bei der Menge, wenn das dein ernst ist, empfehle ich dir diese gleich in eine Datenbank zu packen.

    Dann kannst Du über die Powershell die Daten für den gewünschten Tag/FolgeTag berechnen.

    Oder dann doch gleich alles mit der PowerShell berechnen und die DB füllen für deinen 2.000 Jahre Zeitraum.

    Dann brauchst Du für die Nachwelt nur noch ein einfaches Script schreiben, dass die Daten für den gewünschten Zeitraum ausliest.

    Dabei ist aber zu beachten, dass sich z.B.: durch Erdbeben usw. sich die Erdachse verschieben kann, was sich dann auch auf die berechneten Zeiten auswirken würde ...

    Beste Gruesse
    brima

    • Als Antwort markiert arnold_ Freitag, 5. August 2016 07:01
    Freitag, 29. Juli 2016 22:17
  • Danke,

    Das stimmt vollkommen! Das shell gab mir ein negativen wert. Was mir eine Minute dazu kam! Aber das endergebnis war positiv!

    EigenBau:

    Verschieden Tageslängen/twiligth

    Venus Bildlich dargestellt:

    Venus bildlich dargestellt

    Arnold

    Freitag, 29. Juli 2016 22:17
  • Guten Tag,

    So geht es .... mit xml.

    Sonne-UA

    Der scripte dazu:

    cls
    
    $Oyears1 = [datetime]::Today.Year
    $Oyears2 = (Get-date).AddYears(1).ToString('yyyy')
    $Oyears3 = [datetime]::IsLeapYear($Oyears1)
    
    [int]$Odays1 = get-date -f "dd"
    [int]$Odays2 = (Get-date).Adddays(1).ToString('dd')
    
    [int]$Omonths1 = get-date -f "MM"
    [int]$Omonths2 = (Get-date).AddMonths(1).ToString('MM')
    
    $Otext = [string] "#text"
    # a=Sunset, u=SunRais, u=NightLength 
    $Opath = "......\sonne-D.xml"
    $OSun_D = New-Object System.Xml.XmlDocument
    $OSun_D.Load($Opath)
    
    # Sunset: end month = 31,30,28 + Today.Year
    if(( $Odays1 -eq 31 ) -or ( $Odays1 -eq 28 ) -or ( $Odays1 -eq 30 ) -and ( $Oyears1 -eq [datetime]::Today.Year )){
    $OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths2 + "/tag" + $Odays2 + "/@a" ).$Otext}
    
    # Sunset: end month = 31,30,28 + AddYears(1) -eq Today.Year
    elseif(( $Odays1 -eq 31 ) -or ( $Odays1 -eq 28 ) -or ( $Odays1 -eq 30 ) -and ( $Oyears2 -eq [datetime]::Today.Year )){
    $OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths2 + "/tag" + $Odays2 + "/@a" ).$Otext}
    
    # Sunset: end month = 31,30,29 + Today.Year $Frue + IsLeapYear
    elseif (( $Odays1 -eq 31 ) -or ( $Odays1 -eq 29 ) -or ( $Odays1 -eq 30 ) -and ( $Oyears3 -eq $false ) -and ( $Oyears1 -eq [datetime]::Today.Year )){
    $OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths2 + "/tag" + $Odays2 + "/@a" ).$Otext}
    
    # Sunset: end month = 31,30,29 + Today.Year $False + IsLeapYear + AddYears(1)
    elseif (( $Odays1 -eq 31 ) -or ( $Odays1 -eq 29 ) -or ( $Odays1 -eq 30 ) -and ( $Oyears3 -eq $false ) -and ( $Oyears2 -eq [datetime]::Today.Year )){
    $OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths2 + "/tag" + $Odays2 + "/@a" ).$Otext}
    
    # Sunrise: standart
    else {($OSunSet = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths1 + "/tag" + $Odays2 + "/@a" ).$Otext)}
    
    # SunRais: standart
    $OSunRise = $OSun_D.SelectSingleNode( "//jahr" + $Oyears1 + "/monat" + $Omonths1 + "/tag" + $Odays1 + "/@u" ).$Otext
    
    $global:Time = [timespan]::fromseconds(( New-TimeSpan -Start $OSunRise -End $OSunSet ).TotalSeconds ).ToString("hh\:mm")
    $global:Time
    
    clear-variable O* -scope global -f

    Was Denken Sie?

    Danke

    @r

    • Als Antwort markiert arnold_ Freitag, 5. August 2016 07:00
    Dienstag, 2. August 2016 16:49