Fischer-Bayern.de
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen   RegistrierenRegistrieren 
 ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Datum<->Text/Zahlen/Kalender-Woche: für alle(?)Fälle

 
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> Pool
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 04.09.2005 - 17:06    Titel: Datum<->Text/Zahlen/Kalender-Woche: für alle(?)Fälle Antworten mit Zitat

EDIT 23.6.07
hat Folgendes geschrieben:
Problem:
• Wie könnte man einfach aus Datum-Werten oder Texten, die aus Datumsformationen stammen (ZB durch AS oder FileMaker oder iCal oder Dialog-Eingaben des Personals... generierte) -> standardisierte oder frei komponierbare Datum-Texte erzeugen und umgekehrt?
so: TEXT <--(HANDLER)--> DATUM <--(HANDLER)--> TEXT usw

• Dabei soll es analog einfach zugehen wie ZB in Excel:
dort kann man Zellen nämlich so formatieren: T.M.JJJJ h:mm...

Idee:
Für Werte wie: JJ MM TT HH MiMi... verwende ich Variablen-Namen


Dazu brauche ich für ein Datum-verarbeitendes Skript:

1) Einen wiederholbaren, universellen aber einfach variierbaren
"Handler-Aufruf-Block":

--#########################
my DatTEXtER( DatTEXtet as string) -- liefert t + MM + mt + JJJJ + MiMi u.s.w
--
#########################


2) Eine global-Reihe(am Kopf des Skriptes), welche die Variablen ad libitum zur Auswahl anbietet:
global JJ, JJJJ, MM, TT, HH, MiMi, KalWoZA --u.s.w <-aus handler: DatTEXtER() --oooo

3) Eine wiederholbar zu gestaltende Wiedergabe-Text-Variable, welche obige Variablen nach Belieben zu einem Text zusammenknüpft
ZB: set DatTEXtet to TT & "." & MM & "." & JJJJ

4) Einen UNIVERSAL-Handler, der immer ansprechbar am Skript-Ende liegt und nach Aufruf die Variablen generiert wie:
JJ MM TT HH MiMi...

Pool-Skript läuft einfach so, kann aber mit Auskommentieren inidivduelle Eingaben prüfen hat Folgendes geschrieben:
--=======am Kopf (Top) leicht abkopierbare Variablen -=======
global d, t, TT, WoTName, WoTName2Its, WoTName3Its, WoTNameZA, m, MM, MoName, MName3Its, JJ, JJJJ, h, HH, mi, MiMi, s, ss, DatTEXtet, KalWoZA --<--DatTEXtER(DatTEX) --ooooo
--
---------------------------EINZEL-BEISPIEL ----------------------------
set DatTEXtet to my DatTEXtER((current date) + (1 * days) as string)
display dialog "Morgen ist : " & WoTName3Its & " " & TT & "." & MM & "." & JJ
--
-------------------- kann HIER beenden mit Abbruch im Dialog----------







--
Dialog-Texte,FileMaker-, iCal od.: MM oder JJJJ oder M u.s.w :
set BeispieleTEXTodDATUMListe to ¬
   {
current date, ¬
      "
7.8.09 7:8:9", ¬
      "
Samstagähnmliches oder sowas ?, 10.11.99 1:2:3 Uhr", ¬
      "
01.02.03 04:05:06", ¬
      "
Sonntag, 25. März 2007 11:01:46 Uhr", ¬
      
1}
--
------------------------------------------------------------
--
Ab HIER:Mit Auskommentieren Einzeltexte/Datums überprüfbar ZB:
--
set BeispieleTEXTodDATUMListe to {(current date) + (1 * days)} --auskommentiert->Schnelltester
--
set BeispieleTEXTodDATUMListe to {"Sa oder sowas ?, 10.11.99 1:2:3 Uhr"} --<-OS9 schluckt das noch
--
set BeispieleTEXTodDATUMListe to {"SaOder sowas ähnliches ? , 10.11.99 1:2:3 Uhr"} --<-ab OSX nur so
--
-----------------------------------------------------

--
repetitiver UNIV.HANDLER-Aufruf---------------------------------
repeat with i from 1 to (count of BeispieleTEXTodDATUMListe)
   
my DatTEXtER(item i of BeispieleTEXTodDATUMListe as string) --<--UNIV.HANDLER-Aufruf
   --
----------------------------------------------------------------------
   
   --
-----------------1.WIEDERGABE-BEISPIEL:------
   
set DatTEXtet to TT & "." & MM & "." & JJJJ
   
display dialog (item i of BeispieleTEXTodDATUMListe as string) & "-->" & return & ¬
      "
1.WIEDERGABE-BEISPIEL:" default answer DatTEXtet
   --
------------------------------------------------
   
   --
-----------------2.WIEDERGABE-BEISPIEL:------
   
set DatTEXtet to t & "." & m & "." & JJ
   
display dialog (item i of BeispieleTEXTodDATUMListe as string) & "-->" & return & ¬
      "
2.WIEDERGABE-BEISPIEL:" default answer DatTEXtet
   --
------------------------------------------------
   
   --
-----------------3.WIEDERGABE-BEISPIEL:------
   
set InfoText to ""
   
if date string of (date (item i of BeispieleTEXTodDATUMListe as string as string)) ¬
      =
date string of (current date) as string ¬
      
then set InfoText to "=HEUTE!"
   
set DatTEXtet to ¬
      "
In Woche Nr. " & KalWoZA & " ein: " & WoTName3Its & "." & InfoText & return & ¬
      
t & "." & m & "." & JJ & ¬
      "
-->Jahr,Monat,Tag: [" & JJJJ & "." & MM & "." & TT & "]" & return & ¬
      "
->Uhr-Zeit: " & HH & ":" & MiMi & ":" & ss & " h =" & mi & " Min nach " & h & " h"
   
display dialog (item i of BeispieleTEXTodDATUMListe as string) & "-->" & return & ¬
      "
3.WIEDERGABE-BEISPIEL:" default answer DatTEXtet
   --
------------------------------------------------
end repeat

--
ooooooooooooooUNIVERSALHANDLERoooo

on DatTEXtER(DatTEX) --ooooo
set AppleScript's text item delimiters to "" --falls in obigen Skripts umgestellt wurde
set a to DatTEX
set d to date a
set d to d -- + (1 * days)
date "Samstag, 3. September 2005 12:00:00 Uhr" --date-Tester: ZB date "1" dann ENTER
set Wort1 to word 1 of (d as text) --Donnerstag
set Wort2 to word 2 of (d as text) --8
set Wort3 to word 3 of (d as text) --September
set Wort4 to word 4 of (d as text) --2005
-- Wort5--EDIT hatte noch Fehler
set Wort5 to word 5 of (d as text) --0 OSX macht Fehler bei Rückwandlung
set Wort6 to word 6 of (d as text) --00--Min
set Wort7 to word 7 of (d as text) --00 --Sec
set Wort8 to word 8 of (d as text) --Uhr --<Wort "Uhr"
--TAG##################
set t to (d's day) as text
set TT to text -2 thru -1 of ("0" & d's day) --31.(ZB 31.Januar 05)
set WoTageListe to {"Montag", "Dienstag", "MiTTwoch", "Donnerstag", ¬
"Freitag", "Samstag", "Sonntag"} --Montag =1
set WoTName to word 1 of (d as text) --Dienstag
set WoTName2Its to (text items 1 thru 2 of WoTName) as text --Di
set WoTName3Its to (text items 1 thru 3 of WoTName) as text --Die
repeat with i from 1 to 7
if WoTName = item i of WoTageListe then
set WoTNameZA to text -2 thru -1 of ("0" & i) --Montag=1
exit repeat
end if
end repeat
--Woche################# 2 Donnerstage für Kalender-Wochenzahl
set DoDerWoDAT to (d - (WoTNameZA * days)) + (4 * days)
set YearDoDerWoZA to DoDerWoDAT's year
set Tag4JanDesYearDoDerWoDAT to date ("4.1." & YearDoDerWoZA)
set WoTName4JanDesYearDoDerWoDAT to word 1 of (Tag4JanDesYearDoDerWoDAT as text)
repeat with i from 1 to 7
if WoTName4JanDesYearDoDerWoDAT = item i of WoTageListe then
set WoTName4JanDesYearDoDerWoZA to text -2 thru -1 of ("0" & i) --Montag=1
exit repeat
end if
end repeat
set DoDesTag4JanDesYearDoDerWoDAT to ¬
(Tag4JanDesYearDoDerWoDAT - (WoTName4JanDesYearDoDerWoZA * days)) + (4 * days)
set KalWoZA to (DoDerWoDAT - DoDesTag4JanDesYearDoDerWoDAT)
set KalWoZA to round ¬
(1.05 + ((DoDerWoDAT - DoDesTag4JanDesYearDoDerWoDAT) / (7 * 86400)) + (WoTNameZA / 7)) ¬
rounding down
--Monat #################
set MonatsListe to {"Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", ¬
"August", "September", "Oktober", "November", "Dezember"}
set MoName to word 3 of (d as text)
repeat with i from 1 to 12
if MoName = item i of MonatsListe then
set MM to text -2 thru -1 of ("0" & i) --09
set m to i
exit repeat
end if
end repeat
set MName3Its to (text items 1 thru 3 of MoName) as text
--JJJJ #################
set JJJJ to ((year of d) as text) --2005
set jj to (text items -2 thru -1 of JJJJ) as text --05
--Zeit #################
set Zeit to time string of d
set Stunde to Wort5
--error 0 & {Stunde, Zeit}
set h to Wort5 as integer -- word 5 of (DaTTEX) --07 --geht nicht auf OSX!!
set mi to Wort6 as integer --00
set s to Wort7 as integer --09
--0 erzeugen:
set HH to text -2 thru -1 of ("0" & h)
set mimi to text -2 thru -1 of ("0" & mi)
set ss to text -2 thru -1 of ("0" & s)
--
--display dialog 0 default answer "T:" &T& " M:" & M & " m:" & mi & " s:" & s
my MilleniumWandler1900Zu2000() --oooooooo
end DatTEXtER
on MilleniumWandler1900Zu2000() --oooooooo
if text item 1 of JJJJ = "1" then --<-1900
if JJJJ < 1915 then -- <--1914 Tod des ersten D Weltkrieg-Soldaten
set JJJJ to "20" & (text -2 thru -1 of JJJJ)
end if
end if
if jj > 14 then set JJJJ to "19" & jj --Geburten nach 2014
end MilleniumWandler1900Zu2000

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius


Zuletzt bearbeitet von spirigwi am 25.06.2007 - 08:19, insgesamt 48-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 25.03.2007 - 14:53    Titel: Datumstexter als Skript, welches wiederum Skript erzeugt Antworten mit Zitat

Nun dient dieser Handler natürlich auch dazu, Texte, die aus Programmen wie iCal oder FileMaker stammen, darauf zu überprüfen, ob sie Datumswerte für AS liefern und vor allem ob dieser Datumswert dem Text entspricht. Falls man Diskrepanzen feststellt, kann man mit den Variablen JJ MM TT HH MiMi... analysieren, welche Textstelle den Fehler erzeugt u.s.w:
ZB würde durch Weglassen der Uhrzeitvariablen die Zeit 00:00:00 für das jeweilige Datum erzeugt.
Der manipulative Anteil durch diesen Handler scheint mir wesentlich grösser als Apples Angebot:
von Skeeve entdeckt und verdankenswerterweise im OSX-Snippet dem Forum mitgeteilt hat Folgendes geschrieben:
set DatumsText to date string of (current date)
--
oder
set ZeitText to time string of (current date)

ein Beispiel dazu:
Zitat:
set AusDatumsProgrammVariable to "do 29. märz 07" --<-- aus FileMaker-Feld
set DatTEX to date AusDatumsProgrammVariable
set DatTEX to date string of DatTEX
error 0 & DatTEX --> Donnerstag, 29.März 2007
--
<--diesen Wert erkennt weder FileMaker noch mein Kalenderprogramm als Datum
--
es nützt also nicht viel, wenn AS das Datum richtig "textet".
--
also:
--
#########################
my DatTEXtER (date AusDatumsProgrammVariable as string) -- ooooo--> ZB MM oder JJJJ oder MiMi u.s.w
--
#########################
set DatTEX to TT & "." & MM & "." & Jahr
DatTEX = "29.03.07"
--
<--nur so erkennt mein Kalenderprogramm das Datum


EDIT: um Skripts im Menu abzulegen, kann man sich ja die Eigenschaft des clipboards, Skripttexte "maSkieren" zu können, zunutze machen.
_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius


Zuletzt bearbeitet von spirigwi am 01.08.2007 - 11:37, insgesamt 5-mal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
spirigwi
•----->
•----->


Anmeldedatum: 10.07.2003
Beiträge: 1529
Wohnort: Olten-CH

BeitragVerfasst am: 13.05.2007 - 10:23    Titel: Besonderheit für FileMaker user(jedenfalls Fm 5.5 geprüft) Antworten mit Zitat

Hinweis für FileMaker-user
Dieser Handleraufruf funktioniert nur, wenn er ausserhalb des FileMaker-Tell-Block steht!
Zur Veranschaulichung habe ich den Tell-Aufruf auskommentiert
hat Folgendes geschrieben:
--tell application "FileMaker Pro"
   --
SCRIPT BEISPIELE mit HANDLERAUFRUF:
   
set EinDatumOderText to ContentOfCellDatum --ZB "25.3.07"<= ContentOfCellDatum aus FileMaker-Feld
   
   --
#########################
   
my DatTEXtER(date EinDatumOderText as string) --liefert ZB MM oder JJJJ oder MiMi u.s.w
   --
#########################
--
end tell

_________________
 Skript-Fan => ein � -Fan =>Scr¿¿-KongFuSius_Kurpfusius
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Fischer-Bayern.de Foren-Übersicht -> Pool Alle Zeiten sind GMT + 2 Stunden
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2002 phpBB Group
Deutsche Übersetzung von phpBB.de


AppleScript für absolute Starter