PDA

Volledige versie bekijken : Converten van datum


Kees Schilder
%Europe/Berlin %434 %2010, 11:25
Hey,

Ik heb een script in AS2 dat variabelen uit een php-file uit, waaronder een datum. Deze datum is weergegeven als "2010-09-04". Is het mogelijk om in AS2 deze notatie te veranderen naar bv "04-09-2010" of naar "04 september".
Ik heb dit liever niet in het php-file zelf, want die wordt op nog een andere manier ook gebruikt.

Het uitleesscript is:
var lvSend:LoadVars = new LoadVars();
var lvReceive:LoadVars = new LoadVars();
var total:Number = 5;
lvSend.total = total;
lvSend.sendAndLoad('http://www.***/****.php?****ID=1', lvReceive, 'POST');
lvReceive._parent = this;
lvReceive.onLoad = function(success:Boolean):Void
{
if(success)
{
this._parent["datum1"].text = this["Datum0"];
this._parent["tijd1"].text = this["Tijd0"];
this._parent["wedstrijd1"].text = this["Wedstrijd0"];
}
else
{
trace('connection error');
}
}

De variabele Datum0 moet dus worden omgezet naar een ander formaat.
Is dit mogelijk?

Dauntless
%Europe/Berlin %447 %2010, 11:44
- Splits de string op met .split("-")
- Converteer de waardes naar een number en maak een nieuw Date() object aan:
http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary153.html
- Daarna kan je met de verschillende methodes van de Date() classe je eigen string samenstellen

Kees Schilder
%Europe/Berlin %578 %2010, 14:52
- Splits de string op met .split("-")
- Converteer de waardes naar een number en maak een nieuw Date() object aan:
http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary/actionscript_dictionary153.html
- Daarna kan je met de verschillende methodes van de Date() classe je eigen string samenstellen


Ik kom er niet helemaal uit.
De opmaak van de datum is: Datum0=2010-09-04
Ik heb nu het volgende script:
ten eerste geeft Flash aan dat er op regel 1 een '{' moet staan, maar die staat er al:S
Ten tweede, het werkt niet :#
Wat doe ik verkeerd?

function datum0(str:String):Date{
var d:Array = str.split("-");
var year:Number = parseInt(d[0]);
var month:Number = parseInt(d[1]);
var day:Number = parseInt(d[2]);

var Datum0new = new Date(year, month, day);
return Datum0new;

}

Dauntless
%Europe/Berlin %585 %2010, 15:03
Hoe ziet je gehele script er nu uit? Want dat fragmentje ziet er goed uit en geeft hier ook geen fouten. :)

Kees Schilder
%Europe/Berlin %595 %2010, 15:18
var lvSend:LoadVars = new LoadVars();
var lvReceive:LoadVars = new LoadVars();
var total:Number = 5;

lvSend.total = total;
lvSend.sendAndLoad('http://www.***.nl/Ripper/****2.php?teamID=1', lvReceive, 'POST');

lvReceive._parent = this;
lvReceive.onLoad = function(success:Boolean):Void

function Datum0(str:String):Date {
var d:Array = str.split("-");
var year:Number = parseInt(d[0]);
var month:Number = parseInt(d[1]);
var day:Number = parseInt(d[2]);

var Datum0new = new Date(year, month, day);
return Datum0new;
}
{
if(success)
{
this._parent["naam1"].text = this["Datum0new"];

}
else
{
trace('connection error');
}
}

Dauntless
%Europe/Berlin %602 %2010, 15:27
Functies horen gewoon onder elkaar, niet in elkaar :).

var lvSend:LoadVars = new LoadVars();
var lvReceive:LoadVars = new LoadVars();
var total:Number = 5;

lvSend.total = total;
lvSend.sendAndLoad('http://www.***.nl/Ripper/****2.php?teamID=1', lvReceive, 'POST');

lvReceive._parent = this;
lvReceive.onLoad = function(success:Boolean):Void

{
if(success)
{
this._parent["naam1"].text = this["Datum0new"];

}
else
{
trace('connection error');
}
}


function Datum0(str:String):Date {
var d:Array = str.split("-");
var year:Number = parseInt(d[0]);
var month:Number = parseInt(d[1]);
var day:Number = parseInt(d[2]);

var Datum0new = new Date(year, month, day);
return Datum0new;
}

Ze kunnen overigens wel in elkaar hoor, maar dat is niet mooi. Het zou dan zo moeten:

var lvSend:LoadVars = new LoadVars();
var lvReceive:LoadVars = new LoadVars();
var total:Number = 5;

lvSend.total = total;
lvSend.sendAndLoad('http://www.***.nl/Ripper/****2.php?teamID=1', lvReceive, 'POST');

lvReceive._parent = this;
lvReceive.onLoad = function(success:Boolean):

{// <====================================== DEZE STOND VERKEERD

function Datum0(str:String):Date {
var d:Array = str.split("-");
var year:Number = parseInt(d[0]);
var month:Number = parseInt(d[1]);
var day:Number = parseInt(d[2]);

var Datum0new = new Date(year, month, day);
return Datum0new;
}

if(success)
{
this._parent["naam1"].text = this["Datum0new"];

}
else
{
trace('connection error');
}
}
Maar zet ze dus gewoon na elkaar :)

Kees Schilder
%Europe/Berlin %871 %2010, 21:55
Alvast bedankt, maar het wil niet echt (lees: echt niet) lukken.
Ik ben een echte amateur is AS, vandaar eerst ff enkele vraagjes zodat ik zelf het script ook begin te snappen, want inmiddels ben ik de weg helemaal kwijt.

Leest de eerste regel nu de waarde van Datum0, of heet ie functie 'Datum0'?
Ik neem aan dat de 1na laatste regel de waarde van Datum (mits deze wel uitgelezen wordt, waar ik nu dus mijn twijfels over heb) in een getal.
Daarna moet er dus nog een conversie plaats vinden naar de gewenste format, of wordt dat nu al gedaan?

Sorry, maar ik snap het op dit moment echt helemaal niet meer. :(

function Datum0(str:String):Date {
var d:Array = str.split("-");
var year:Number = parseInt(d[0]);
var month:Number = parseInt(d[1]);

var day:Number = parseInt(d[2]);

var Datum0new = new Date(year, month, day);
return Datum0new;

Dauntless
%Europe/Berlin %875 %2010, 22:00
De functie HEET Datum0.

Een functie is een klein scriptje dat je kan oproepen en dat dan eventueel iets teruggeeft.

In dit geval heb je een functie gemaakt die een string aanneemt, en een datum terug geeft.

Je kan de functie oproepen met Datum0("hierMijnString") en dat resultaat dan opslaan:
var myDate:Date = Datum0("...");

Hoe het ongeveer moet worden:
var lvSend:LoadVars = new LoadVars();
var lvReceive:LoadVars = new LoadVars();
var total:Number = 5;

var lScope:MovieClip = this;
lvSend.total = total;
lvSend.sendAndLoad('http://www.***.nl/Ripper/****2.php?teamID=1', lvReceive, 'POST');

lvReceive._parent = this;
lvReceive.onLoad = function(success:Boolean):Void

{
if(success)
{
var date:Date = convertStringToDate( this.Datum0new);
lScope.naam1.text = date.toString(); //maar dan zelf een mooiere string samenstellen


}
else
{
trace('connection error');
}
}


function convertStringToDate(str:String):Date {
var d:Array = str.split("-");
var year:Number = parseInt(d[0]);
var month:Number = parseInt(d[1]);
var day:Number = parseInt(d[2]);

var Datum0new = new Date(year, month, day);
return Datum0new;
}

Kees Schilder
%Europe/Berlin %601 %2010, 15:25
Ik heb dit script nu toegepast, maar het werkt niet:S.

Ik denk dat het in


function convertStringToDate(str:String):Date {
var d:Array = str.split("-");
var year:Number = parseInt(d[0]);
var month:Number = parseInt(d[1]);
var day:Number = parseInt(d[2]);

var Datum0new = new Date(year, month, day);
trace(Datum0new);
return Datum0new;


fout gaat, want trace(Datum0new) geeft 'Invalid Date' aan. Dit wordt ook op de site zelf weergegeven.


Laat maar, fout gevonden, zat in

var date:Date = convertStringToDate( this.Datum0new);

Dat moet

var date:Date = convertStringToDate( this.Datum0);

zijn.
Bedankt voor je hulp!

Kees Schilder
%Europe/Berlin %868 %2010, 21:49
Het is nu helemaal gelukt met de datums,
Ik heb nu een andere vraag.
naast de datum wordt er ook nog verschillende ploegnamen opgehaald door het script. Enkele ploegnamen hebben als naam: 'Ploegnaam (VV)' . Is het mogelijk om deze "(VV)" te verwijderen, maar niet één voor één, maar allemaal tegelijk.
Voor het veranderen van de datum wordt bijv ( this.Datum0) gebruikt. Hier wordt dus alleen Datum0 veranderd, als ik dit zou gebruiken voor het veranderen van de ploegnamen, dan zou ik 18 keer dezelfde functie moeten gebruiken. Niet echt handig, lijkt mij.

Wat ik dus wil in het kort: het verwijderen van alle (VV) net na het laden van het externe bestand.

Dauntless
%Europe/Berlin %895 %2010, 22:30
Daar kan je ook een functie voor schrijven:
function removeVV(str:String):String
{
return str.split("(VV)").join("");
}
Ps: Zoek nog eens wat info op over hoe functies werken want je begrijpt het toch nog niet 100% (of je legt het vreemd uit ;) )