Comunidad de diseño web y desarrollo en internet online

Clase de Actionscript 3 para escribir fechas y horas

Esta clase sirve para convertir los valores que devuelven los métodos de la clase Date en palabras. Para utilizar esta clase es imprescindible importar la clase NumberToWords que hay en este otro tip (servirá para convertir los números de las horas y de las fechas):


Los métodos de esta clase tienen el mismo nombre que sus equivalentes en la clase Date, pero son estáticos, y hay que pasarles un objeto Date como parámetro:
    getDate, getDay, getFullYear, getHours, getMilliseconds, getMinutes, getMonth, getSeconds, getTime, getTimezoneOffset, getUTCDate, getUTCDay, getUTCFullYear, getUTCHours, getUTCMilliseconds, getUTCMinutes, getUTCMonth, getUTCSeconds, toDateString, toLocaleDateString, toLocaleString, toLocaleTimeString, toString, toTimeString, toUTCString, valueOf, parse, UTC.

Además de estos métodos, propios de la clase Date, he añadido otros 2:
  • localeTime24String: devuelve la hora en formato 24 horas
  • informalTime: devuelve la hora usando un lenguaje más coloquial

Ejemplo de uso:


Código :

import DateToWords;
var date:Date = new Date();         
trace(DateToWords.getDate(date));
//siete
trace(DateToWords.getDay(date));
//lunes
trace(DateToWords.getFullYear(date));
//dos mil nueve

El siguiente swf muestra la salida de todos los métodos de la clase (usando new Date() como parámetro) al pulsar el botón “Recalcular Date”.

Código de la clase:


Código :

package
{
   import NumberToWords;
   public class DateToWords
   {
      private static const MONTHS:Array = ["enero", "febrero", "marzo", "abril", "mayo", "junio", "julio", "agosto", "septiembre", "octubre", "noviembre", "diciembre"];
      private static const DAYS:Array = ["domingo", "lunes", "martes", "miércoles", "jueves", "viernes", "sábado"];
      public static function getDate(date:Date):String
      {
         return NumberToWords.convertNumber(date.getDate(), NumberToWords.GENDER_MALE);
      }
      public static function getDay(date:Date):String
      {
         return DAYS[date.getDay()];
      }
      public static function getFullYear(date:Date):String
      {
         return NumberToWords.convertNumber(date.getFullYear(), NumberToWords.GENDER_MALE);
      }
      public static function getHours(date:Date):String
      {
         return NumberToWords.convertNumber(date.getHours(), NumberToWords.GENDER_FEMALE);
      }
      public static function getMilliseconds(date:Date):String
      {
         return NumberToWords.convertNumber(date.getMilliseconds(), NumberToWords.GENDER_MALE);
      }
      public static function getMinutes(date:Date):String
      {
         return NumberToWords.convertNumber(date.getMinutes(), NumberToWords.GENDER_NONE);
      }
      public static function getMonth(date:Date):String
      {
         return MONTHS[date.getMonth()];
      }
      public static function getSeconds(date:Date):String
      {
         return NumberToWords.convertNumber(date.getSeconds(), NumberToWords.GENDER_NONE);
      }
      public static function getTime(date:Date):String
      {
         return NumberToWords.convertNumber(date.getTime(), NumberToWords.GENDER_MALE);
      }
      public static function getTimezoneOffset(date:Date):String
      {
         return NumberToWords.convertNumber(date.getTimezoneOffset(), NumberToWords.GENDER_MALE);
      }
      public static function getUTCDate(date:Date):String
      {
         return NumberToWords.convertNumber(date.getUTCDate(), NumberToWords.GENDER_MALE);
      }
      public static function getUTCDay(date:Date):String
      {
         return DAYS[date.getUTCDay()];
      }
      public static function getUTCFullYear(date:Date):String
      {
         return NumberToWords.convertNumber(date.getUTCFullYear(), NumberToWords.GENDER_MALE);
      }
      public static function getUTCHours(date:Date):String
      {
         return NumberToWords.convertNumber(date.getUTCHours(), NumberToWords.GENDER_FEMALE);
      }
      public static function getUTCMilliseconds(date:Date):String
      {
         return NumberToWords.convertNumber(date.getUTCMilliseconds(), NumberToWords.GENDER_MALE);
      }
      public static function getUTCMinutes(date:Date):String
      {
         return NumberToWords.convertNumber(date.getUTCMinutes(), NumberToWords.GENDER_NONE);
      }
      public static function getUTCMonth(date:Date):String
      {
         return MONTHS[date.getUTCMonth()];
      }
      public static function getUTCSeconds(date:Date):String
      {
         return NumberToWords.convertNumber(date.getUTCSeconds(), NumberToWords.GENDER_NONE);
      }
      public static function toDateString(date:Date):String
      {
         return DAYS[date.getDay()] + ", " + getDate(date) + " de " + getMonth(date) + " de " + getFullYear(date);
      }
      public static function toLocaleDateString(date:Date):String
      {
         return toDateString(date);
      }
      public static function toLocaleString(date:Date):String
      {
         return toDateString(date) + "; " + toLocaleTimeString(date);
      }
      public static function toLocaleTimeString(date:Date):String
      {
         var returnedStr:String = format12Hours(date.getHours()) + " horas ";
         returnedStr += getMinutes(date) + " minutos y ";
         returnedStr += getSeconds(date) + " segundos, ";
         returnedStr += (date.getHours() > 12) ? "Post Meridiem" : "Ante Meridiem";
         return returnedStr;   
      }
      public static function toString(date:Date):String
      {
         return toDateString(date) + "; " + toTimeString(date);
      }
      public static function toTimeString(date:Date):String
      {
         return localeTime24String(date) + ", " + getGMT(date);
      }
      private static function getGMT(date:Date):String
      {
         return "Tiempo Medio de Greenwich: " + NumberToWords.convertNumber((-date.getTimezoneOffset() / 60), NumberToWords.GENDER_MALE);
      }
      public static function toUTCString(date:Date):String
      {
         return "Tiempo Universal Coordinado: " + DAYS[date.getUTCDay()] + ", " + getUTCDate(date) + " de " + getUTCMonth(date) + " de " + getUTCFullYear(date) + "; " + getUTCHours(date) + " horas " + getUTCMinutes(date) + " minutos y " + getUTCSeconds(date) + " segundos";
      }
      public static function valueOf(date:Date):String
      {
         return NumberToWords.convertNumber(date.valueOf(), NumberToWords.GENDER_MALE);
      }
      //Estas son las 2 estáticas de la clase Date:
      public static function parse(date:String):String
      {
         return NumberToWords.convertNumber(Date.parse(date), NumberToWords.GENDER_MALE);
      }
      public static function UTC(year:Number, month:Number, date:Number = 1, hour:Number = 0, minute:Number = 0, second:Number = 0, millisecond:Number = 0):String
      {
         return NumberToWords.convertNumber(Date.UTC(year, month, date, hour, minute, second, millisecond), NumberToWords.GENDER_MALE);
      }
      //Estos dos métodos no existen en la clase Date:
      public static function localeTime24String(date:Date):String
      {
         return getHours(date) + " horas " + getMinutes(date) + " minutos y " + getSeconds(date) + " segundos";
      }
      public static function informalTime(date:Date):String
      {
         var hour:Number = date.getHours();
         var minute:Number = date.getMinutes();
         var hourStr:String;
         var minuteStr:String;
         var dayPartStr:String;
         var linkWord:String;
         
         linkWord = getLinkWord(minute);
         
         if (hour > 6 && hour < 12)
            dayPartStr = " de la mañana";
         else if (hour < 16)
            dayPartStr = " del mediodía";
         else if(hour < 21)
            dayPartStr = " de la tarde";
         else
            dayPartStr = " de la noche";
         
         //Si los minutos son mayor que 30, se pondrá una hora más y los minutos serán los que faltan para la hora:
         if (minute > 30)
         {
            hour++;
            minute = 60 - minute;
         }
         
         //Pasamos las horas a formato 12 horas:
         hourStr = format12Hours(hour);
         
         minuteStr = minuteToString(minute);
         
         return hourStr + linkWord + minuteStr + dayPartStr;
      }
      private static function getLinkWord(minute:Number):String
      {
         if (minute == 0)
         {
            return " ";
         }
         else if (minute > 30)
         {
            return " menos ";
         }
         else
         {
            return " y ";
         }
      }
      private static function format12Hours(hour:Number):String
      {
         hour %= 12;
         if (hour == 0) hour = 12;
         return NumberToWords.convertNumber(hour, NumberToWords.GENDER_FEMALE);;
      }
      private static function minuteToString(minute:Number):String
      {
         switch (minute)
         {
            case 0: 
               return "en punto"; 
               break;
            case 15: 
               return "cuarto"; 
               break;
            case 30: 
               return "media"; 
               break;
            case 45: 
               return "cuarto"; 
               break;
            default: 
               return NumberToWords.convertNumber(minute, NumberToWords.GENDER_NONE) + " minutos"; 
               break;
         }
      }
   }
}

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

El autor de este artículo ha cerrado los comentarios. Si tienes preguntas o comentarios, puedes hacerlos en el foro

Entra al foro y participa en la discusión

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate