hilfdirselbst.ch
Facebook Twitter gamper-media

Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Problem beim "Datum aktualisieren" Script

 

« « 1 2 » »  


Uncle Tsebe S
Beiträge: 113

26. Jan 2012, 16:36

Beitrag #1 von 16
Bewertung:

(577 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Hallo Gemeinde,

ich bin da auf das Script "refresh_date-CS3.jsx" gestoßen.
Code
var myStyle = app.documents.firstItem().characterStyles.item("Datum+1");     
if (myStyle == null)
exit ();

//Format: Freitag, 20. Januar 2012

var d= new Date();
var myMonth = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var myDay = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
var myDate = myDay[d.getDay()*1 + 1] + "," + " " + [d.getDate()*1 + 1] + "." + " " + myMonth[d.getMonth()] + " " + (d.getYear()*1 +1900);

app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.appliedCharacterStyle = myStyle;
app.changeTextPreferences.changeTo = myDate;

app.documents.firstItem().changeText();

Dieses habe ich ein wenig modifiziert.
D. h. die Datumsanzeige ist nach dem Format "Tag, XX. Monat Jahr" gesetzt. Und es wird immer das aktuelle Datum +1 angezeigt.
Soweit funktioniert das auch.

Ich habe jetzt nur ein großes Problem:
Wenn ich z. B. am 31. Januar 2012 das Script ausführe wird statt dem 1. Februar der 32. Januar eingesetzt. Der Wochentag stimmt logischerweise.

Ich habe das jetzt getestet indem ich die lokale Systemzeit umgestellt habe...

Wie kann ich das Script ändern, damit auch der Monatsumschwung funktioniert.
Gibt es eine Möglichkeit auf ein externe Datumsquelle (in der auch das Schaltjahr berücksichtig wird) zuzugreifen?

Wäre super wenn mir hierzu jemand einen Tipp hätte.
Danke schon mal

Gruß,
Thomas

P.S: Das Script läuft auf WindowsXP unter InDesign CS4 (6.0.6)
Top

WernerPerplies
Beiträge: 933

26. Jan 2012, 16:49

Beitrag #2 von 16
Beitrag ID: #488647

Bewertung:

(570 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Hallo Thomas,

in meinem Kalenderskript solltest Du alles finden, was Du brauchst.

Deine Frage nach dem Schaltjahr verstehe ich nicht. Das Schaltjahr wird doch automatisch durch die Date-Klasse berücksichtigt.

Damit Du nicht so lange suchen musst:

Code
main() 

function main()
{
var date = calculateDays(new Date(2012,0,31), 1);
alert(date);
return ;
}

function calculateDays(date, days)
{
var timeOfDate = date.getTime();
var timeOfDays = days*24 * 60 * 60 * 1000;
var calculatedDate = new Date()
calculatedDate.setTime(timeOfDate+timeOfDays);
return calculatedDate;
}



Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
10 Anwenderskripte für InDesign
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsIncludesIncludes

als Antwort auf: [#488645]

(Dieser Beitrag wurde von WernerPerplies am 26. Jan 2012, 17:00 geändert)
Top

Uncle Tsebe S
Beiträge: 113

26. Jan 2012, 19:01

Beitrag #3 von 16
Beitrag ID: #488651

Bewertung:

(539 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Hallo Werner,

vielen Dank für die schnelle Antwort.

Mein Problem ist, dass ich einfach nur ein einfaches Script benötige das in einer bestimmten Zeile das Datum +1 einfügt. D. h. heute, Donnerstag, soll das Datum von Freitag drin stehen, nicht das heutige.
Das funktioniert ja soweit.
Nur da ich dem Script ja nur sage "rechne mir das aktuelle Datum und addiere 1" ist mir eigentlich klar wieso am Monatsende der 32. Januar eingefügt wird...

Daher die Frage wie ich das lösen kann, dass das Script nachschaut ob es einen Monatswechsel gibt.


Sorry, hab meine Frage am Anfang vielleicht etwas zu undeutlich beschrieben.

Könnte ich sowas über dein Kalenderscript lösen?
Hab mir das mal kurz angeschaut.
Ist doch recht komplex, die Geschichte und von Scripten habe ich leider Gottes wenig bis gar keine Ahnung.

Gruß,
Thomas

als Antwort auf: [#488647] Top

WernerPerplies
Beiträge: 933

26. Jan 2012, 19:15

Beitrag #4 von 16
Beitrag ID: #488652

Bewertung:

(532 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Hallo Thomas,

Datum +1:

Das sollte funktionieren:

main()

function main()
{
var date = calculateDays(new Date(), 1); <----------------
alert(date);
return ;
}

function calculateDays(date, days)
{
var timeOfDate = date.getTime();
var timeOfDays = days*24 * 60 * 60 * 1000;
var calculatedDate = new Date()
calculatedDate.setTime(timeOfDate+timeOfDays);
return calculatedDate;
}

Probiere das einfach mal aus, es würde mich sehr wundern, wenn da am 31. Januar der 32. Januar herauskäme.


Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
10 Anwenderskripte für InDesign
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsIncludesIncludes

als Antwort auf: [#488651] Top

WernerPerplies
Beiträge: 933

26. Jan 2012, 21:09

Beitrag #5 von 16
Beitrag ID: #488653

Bewertung:

(496 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Hallo Thomas,

so müsste das gewünschte Script funktionieren:

Code
main() 

/*void*/function main()
{
var myStyle = app.documents.firstItem().characterStyles.item("Datum+1");
if (myStyle == null) exit ();
app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.appliedCharacterStyle = myStyle;
app.changeTextPreferences.changeTo = nextDayDate();
app.documents.firstItem().changeText();
return;
}
/*string*/function nextDayDate()
{
var d= calculateDays(new Date(), 1);
var month = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var day = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
return day[d.getDay()] + "," + " " + [d.getDate()] + "." + " " + month[d.getMonth()] + " " + (d. getFullYear ());
}

/*date*/function calculateDays(date, days)
{
var timeOfDate = date.getTime();
var timeOfDays = days*24 * 60 * 60 * 1000;
var calculatedDate = new Date()
calculatedDate.setTime(timeOfDate+timeOfDays);
return calculatedDate;
}



Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
10 Anwenderskripte für InDesign
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsIncludesIncludes

als Antwort auf: [#488652] Top

gfellenz
Beiträge: 78

26. Jan 2012, 21:23

Beitrag #6 von 16
Beitrag ID: #488654

Bewertung: ||

(484 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Der erste Ansatz von Thomas war doch gar nicht so schlecht. Im folgenden korrigiert:


Code
function nextDayDate()  {  
var _jetzt = new Date();
var d= new Date(_jetzt.getFullYear(), _jetzt.getMonth(), _jetzt.getDate()+1); // datum + 1 tag

var month = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var day = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
return day[d.getDay()] + "," + " " + [d.getDate()] + "." + " " + month[d.getMonth()] + " " + (d. getFullYear ());
}


Man muss ein neues Datumsobjekt erstellen, anstatt einfach nur die Zahl 1 zum aktuellen Tag zu addieren.
--
Grüße aus Köln,
Gregor Fellenz
http://www.indesignblog.com

als Antwort auf: [#488652] Top

WernerPerplies
Beiträge: 933

27. Jan 2012, 07:30

Beitrag #7 von 16
Beitrag ID: #488659

Bewertung:

(424 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Hallo Gregor,

danke, wieder etwas gelernt.

Da muss man drauf kommen, wenn in der Beschreibung des Konstruktors steht:
day number (range: 1 - 31) ;-)

Aber es geht tatsächlich zum Beispiel auch:
-473, +1024

Hoffentlich wird die Funktionalität nicht mal der Doku angepasst.

Deshalb bleibe ich lieber bei meiner Funktion.


Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
10 Anwenderskripte für InDesign
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsIncludesIncludes

als Antwort auf: [#488654] Top

WernerPerplies
Beiträge: 933

27. Jan 2012, 07:53

Beitrag #8 von 16
Beitrag ID: #488661

Bewertung:

(418 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Ach ja,

und noch eine Variante zur Stringumwandlung eines Datums:

Code
main()  

/*void*/function main()
{
alert(correctedGermanLocaleString(new Date()));
return;
}
/*function*/function correctedGermanLocaleString(date)
{
var dA = date.toLocaleString().replace(",","").split(" ");
return dA[0] + ", "+dA[2] +". " +dA[1] + " " + dA[3] ;

}


Aber Achtung:
Funktioniert nur, so lange die Ausgabe des Methode date.localeString() gleich bleibt, und die ist ja schon etwas gewöhnungsbedürftig.


Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
10 Anwenderskripte für InDesign
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsIncludesIncludes

als Antwort auf: [#488659] Top

Uncle Tsebe S
Beiträge: 113

27. Jan 2012, 07:57

Beitrag #9 von 16
Beitrag ID: #488662

Bewertung:

(415 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Hallo Werner,
hallo Gregor,

vielen, vielen Dank für Eure Hilfe.

Funktioniert so wie ich mir das vorgestellt habe.

Ihr habt einen Menschen glücklich gemacht :-)

Danke und Gruß,
Thomas

als Antwort auf: [#488659] Top

Martin Fischer  M  p
Beiträge: 9472

27. Jan 2012, 08:38

Beitrag #10 von 16
Beitrag ID: #488668

Bewertung:

(389 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Hallo Gregor,

Antwort auf [ gfellenz ]
Code
function nextDayDate()  {  
var _jetzt = new Date();
var d= new Date(_jetzt.getFullYear(), _jetzt.getMonth(), _jetzt.getDate()+1); // datum + 1 tag

var month = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var day = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
return day[d.getDay()] + "," + " " + [d.getDate()] + "." + " " + month[d.getMonth()] + " " + (d. getFullYear ());
}




Hier noch eine Variante unter Verwendung des setDate()-Befehls:

Code
function nextDayDate()  {   
var d = new Date();
d.setDate(d.getDate() + 1);
var month = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var day = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
return day[d.getDay()] + "," + " " + [d.getDate()] + "." + " " + month[d.getMonth()] + " " + (d. getFullYear ());
}


Das sollte auch – von heute aus gesehen – noch in fünf Tagen funktionieren:

Code
nextDaysDate(5); 

function nextDaysDate(add_days) {
var d = new Date();
d.setDate(d.getDate() + add_days);
var month = ["Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"];
var day = ["Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"];
return day[d.getDay()] + "," + " " + [d.getDate()] + "." + " " + month[d.getMonth()] + " " + (d. getFullYear ());
}



Martin Fischer

Skripte für InDesign im Skriptarchiv von HilfDirSelbst.ch

als Antwort auf: [#488654] Top

pixxxelschubser p
Beiträge: 1123

27. Jan 2012, 19:02

Beitrag #11 von 16
Beitrag ID: #488713

Bewertung:

(329 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Zitat von WernerPerplies Ach ja,

und noch eine Variante zur Stringumwandlung eines Datums:

Code
main()  

/*void*/function main()
{
alert(correctedGermanLocaleString(new Date()));
return;
}
/*function*/function correctedGermanLocaleString(date)
{
var dA = date.toLocaleString().replace(",","").split(" ");
return dA[0] + ", "+dA[2] +". " +dA[1] + " " + dA[3] ;

}


Aber Achtung:
Funktioniert nur, so lange die Ausgabe des Methode date.localeString() gleich bleibt, und die ist ja schon etwas gewöhnungsbedürftig.


Und witzig ist sie auch noch, denn für Illu und InDesign sollte man die Ausgabeparameter dA[2] und dA[1] tauschen.

siehe Anhang

Wink


viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton



als Antwort auf: [#488661] Top

Anhang:
Datum-Unterschied.png (34.3 KB)

WernerPerplies
Beiträge: 933

27. Jan 2012, 19:07

Beitrag #12 von 16
Beitrag ID: #488714

Bewertung:

(327 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Ich kann das hier nicht überprüfen, aber dann braucht man es doch gar nicht umwandeln, oder?


Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
10 Anwenderskripte für InDesign
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsIncludesIncludes

als Antwort auf: [#488713]

(Dieser Beitrag wurde von WernerPerplies am 27. Jan 2012, 19:19 geändert)
Top

pixxxelschubser p
Beiträge: 1123

27. Jan 2012, 19:25

Beitrag #13 von 16
Beitrag ID: #488716

Bewertung:

(318 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Jein.

dA würde ansonsten die Uhrzeit mitliefern.


viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton



als Antwort auf: [#488714] Top

WernerPerplies
Beiträge: 933

27. Jan 2012, 19:28

Beitrag #14 von 16
Beitrag ID: #488717

Bewertung:

(313 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


ok, das hatte ich vergessen, also einfach nur die Zeit abschneiden, ginge ein Tick schneller.


Einen schönen Tag wünscht

Werner Perplies
http://www.weepee.de
10 Anwenderskripte für InDesign
Werkzeuge und Infos für die Skriptprogrammierung, schon gesehen?
WpsIncludesIncludes

als Antwort auf: [#488716] Top

pixxxelschubser p
Beiträge: 1123

27. Jan 2012, 22:56

Beitrag #15 von 16
Beitrag ID: #488720

Bewertung:

(263 mal gelesen)
URL zum Beitrag

Beitrag als Lesezeichen

Problem beim "Datum aktualisieren" Script


Illu CS3 ist da recht praktisch (hab hier keine aktuellere Version zum Testen). Du musst eigentlich nichts umwandeln. Und mit folgendem Zweizeiler auch nichts abschneiden.

Code
var dA = new Date().toLocaleDateString(); 
alert (dA);


siehe Anhang


viele Grüße
pixxxelschubser




Was wir wissen, ist ein Tropfen; was wir nicht wissen, ein Ozean.

Isaac Newton



als Antwort auf: [#488717] Top

Anhang:
Datum-Unterschied2.png (16.0 KB)
« « 1 2 » »  


Forenindex » Programme » Print/Bildbearbeitung » Adobe InDesign Skriptwerkstatt » Problem beim "Datum aktualisieren" Script


^