Pagina 2 di 6 primaprima 1 2 3 4 ... ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 55

Discussione: Mi RIPETO

  1. #11
    nosferatu_net
    Guest
    Eccola qua!
    Per la serie: actionscripts inutili per problemi inesistenti...
    java.text.SimpleDateFormat
    (trombe e trombette)

    Ho preferito estendere la classe Date piuttosto che fare una classe formattante, mi pare più pratico.

    Non l'ho mai testata in Flash, non ce l'ho qui da dove scrivo, ma l'ho provata in JavaScript e dovrebbe essere identica.

    Pronti... Via!
    codice:
    Date.prototype.LOCALIZED_MONTHS = new Array(
    	"Gennaio", "Febbraio", "Marzo", "Aprile",
    	"Maggio", "Giugno", "Luglio", "Agosto",
    	"Settembre", "Ottobre", "Novembre", "Dicembre"
    );
    Date.prototype.LOCALIZED_DAYS = new Array(
    	"Domenica", "Lunedì",
    	"Martedì", "Mercoledì",
    	"Giovedì", "Venerdì", "Sabato"
    );
    
    String.prototype.nf = function(c)
    {
    	return this.length < c ? ("0" + this).nf(c) : this;
    }
    
    Array.prototype.ss = function(i, exp, rep)
    {
    	var it = this[i].split(exp);
    	if (it.length > 1)
    	{
    		for (var c = 1; c < it.length; c+=2)
    			it.splice(c, 0, rep);
    		eval("this.splice(i, 1, '" + it.join("','") + "')");
    	}
    }
    
    Date.prototype.format = function(pattern)
    {
    	var ps = pattern.split("'");
    	if (ps.length % 2 == 0) return "";
    	for (var i = 1; i < ps.length - 1; i++)
    	{
    		if (ps[i] == "")
    		{
    			ps[i-1] += "'" + ps[i+1];
    			ps.splice(i, 2);
    		}
    	}
    	for (var i = 0; i < ps.length; i+=2)
    	{
    		ps.ss(i, /y{3,}/, this.getFullYear());
    		ps.ss(i, /yy/, ("" + this.getFullYear()).substring(2));
    		ps.ss(i, /y/, this.getFullYear());
    		ps.ss(i, /M{4,}/, this.LOCALIZED_MONTHS[this.getMonth()]);
    		ps.ss(i, /MMM/, this.LOCALIZED_MONTHS[this.getMonth()].substring(0, 3));
    		ps.ss(i, /MM/, ("" + this.getMonth()).nf(2));
    		ps.ss(i, /M/, this.getMonth());
    		ps.ss(i, /d{2,}/, ("" + this.getDate()).nf(2));
    		ps.ss(i, /d/, this.getDate());
    		ps.ss(i, /E{4,}/, this.LOCALIZED_DAYS[this.getDay()]);
    		ps.ss(i, /EEE/, this.LOCALIZED_DAYS[this.getDay()].substring(0, 3));
    		ps.ss(i, /EE/, ("" + this.getDay()).nf(2));
    		ps.ss(i, /E/, this.getDay());
    		ps.ss(i, /H{2,}/, ("" + this.getHours()).nf(2));
    		ps.ss(i, /H/, this.getHours());
    		ps.ss(i, /m{2,}/, ("" + this.getMinutes()).nf(2));
    		ps.ss(i, /m/, this.getMinutes());
    		ps.ss(i, /s{2,}/, ("" + this.getSeconds()).nf(2));
    		ps.ss(i, /s/, this.getSeconds());
    		ps.ss(i, /S{3,}/, ("" + this.getMilliseconds()).nf(3));
    		ps.ss(i, /SS/, ("" + this.getMilliseconds()).nf(2));
    		ps.ss(i, /S/, this.getMilliseconds());
    		ps.ss(i, /a+/, this.getHours() < 12 ? "AM" : "PM");
    		ps.ss(i, /K{2,}/, (this.getHours() <= 12 ? "" + this.getHours() : "" + (this.getHours - 12)).nf(2));
    		ps.ss(i, /K/, (this.getHours() <= 12 ? this.getHours() : this.getHours - 12));
    	}
    	return ps.join("");
    }
    Le stringhe da passare come pattern seguono le regole della già citata classe Java, le trovate su:
    http://java.sun.com/j2se/1.4.1/docs/...ateFormat.html

    Esempio di utilizzo:
    codice:
    trace(new Date().format("dd-MMMM-yyyy' sono le 'H:mm:ss"));
    Tutto chiaro, no?

  2. #12
    nope, ci son degli errori nella scrittura del codice ...

    in queste righe qua:
    codice:
    ps.ss(i, /y{3,}/, this.getFullYear());
    ma immagino che sostituendo le / a delle " dovrebbe funzionare ... ora provo e poi ti dico

  3. #13
    asd ... no ... ora ho capito ... queste:
    y{3,}

    le volevi usare tipo le espressioni regolari di php per riconoscere le stringhe ... ma mi sa che in flash non è così facile :P

  4. #14
    nosferatu_net
    Guest
    Urka!!

    Io ero partito pacifico con il metodo split(RegExp), dimenticando che è un metodo JavaScript 1.5 e non ECMA standard...

    In compenso in rete girano alcune classi RegExp per Flash 5, quindi anche per MX dovrebbero andare.

    Ora ne cerco un po'...
    ecco qua la versione più conosciuta:
    www.jurjans.lv/flash/RegExp.as

    ...però sono 17 KB.
    E in più bisognerebbe estendere il metodo String.split() per fargli digerire un oggetto di classe RegExp.

    Non so se oggi ne ho voglia: ho appena finito un lavoraccio a Milano, e mi piacerebbe anche tornare a casa in quel di Vicenza, invece che mettermi a scrivere metodi in AS...

  5. #15
    hehehehe, valà ... prenditela comoda :gren:

    cmq mito, voglio il poster da appendere in camera ora :metallica

  6. #16
    nosferatu_net
    Guest
    Originariamente inviato da CyberPunK
    cmq mito, voglio il poster da appendere in camera ora :metallica
    Eccolo:

  7. #17
    nosferatu, sei proprio un coatto


  8. #18
    nosferatu_net
    Guest
    Originariamente inviato da dioz
    nosferatu, sei proprio un coatto
    Ah! Ah! Ah! C'hai ragione, ahò!

    Comunque inserita nel suo contesto la foto faceva meno impressione: www.betrayer.it
    Sezione "Home/Credits/Nosferatu"

  9. #19
    si, avevo già visto il sito, forse lo avevi postato tempo fa

  10. #20
    nosferatu_net
    Guest
    Per tornare al metodo per formattare le date con poche modifiche e l'implementazione della classe per la gestione delle Regular Expression dovrebbe funzionare.

    Ad occhio e croce bisogna passare le RegExp come istanze di RegExp, cioè ad esempio come:
    new RegExp("/d{4,}/")
    o qualcosa di simile, invece di:
    /d{4,}/
    che ovviamente in Flash non può funzionare.

    La classe RegExp pesa così tanto perché ha il metodo "test" gigantesco; il metodo si può rimuovere, ovviamente.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.