user3870380
user3870380

Reputation: 21

how to convert standard time HH:MM:SS to traditional time in ActionScript 3.0

i have to convert standard time to traditional time in actionscript. this is what i got so far. i would really appreciate your help.

// This line makes the button, btnConvert wait for a mouse click

// When the button is clicked, the convertTime function is called

btnConvert.addEventListener(MouseEvent.CLICK, convertTime);

// This line makes the textinput wait for a mouse click

// When this component is clicked, the clearLabels function is called

txtinStandard.addEventListener(MouseEvent.CLICK, clearLabels);

// Declare Global Variables

var traditionalTime:String;    // traditional time

// This is the convertTime function

// e:MouseEvent is the click event experienced by the button

// void indicates that the function does not return a value

function convertTime(e:MouseEvent):void
{ 

// declare the variables
    var standardTime:String;    // standard time entered by user

    standardTime = txtinStandard.text;     // get standard time from user
    convertToTraditional(standardTime);    // call the convertToTraditional function

    // output an appropriate message in the label
    lblOutput.text = standardTime + " is equivalent to " + traditionalTime;
}

// This is function convertToTraditional

// s – is the standard time

// It determines the traditional time based on the value of s

function convertToTraditional(s:String){

}

// This is the clearLabels function

// e:MouseEvent is the click event experienced by the textInput

// void indicates that the function does not return a value

function clearLabels(e:MouseEvent):void

{

     lblOutput.text = "";

     txtinStandard.text = "";
}

Upvotes: 0

Views: 533

Answers (2)

Crabar
Crabar

Reputation: 1857

You can try built-in as3 tools for this.

    private function convertToTraditional(s:String):String {
        const date:String = "01/01/1970 ";
        var curTime:Date = new Date(Date.parse(date + s));
        var df:DateTimeFormatter = new DateTimeFormatter("en_US");
        df.setDateTimePattern("h:mm:ss a");
        return df.format(curTime);
    }

Date.parse()

dateTimeFormatter.setDateTimePattern()

Upvotes: 3

Marcela
Marcela

Reputation: 3738

Assuming you mean standard time is the 24-hour clock and traditional time is AM/PM clock:

function convertTime(e:MouseEvent):void
{ 

    // declare the variables
    var standardTime:String;    // standard time entered by user

    standardTime = txtinStandard.text;     // get standard time from user
    traditionalTime = convertToTraditional(standardTime);    // call the convertToTraditional function

    // output an appropriate message in the label
    lblOutput.text = standardTime + " is equivalent to " + traditionalTime;
}

function convertToTraditional(s:String):String{
    // separate the standard time into it parts (hour, minutes, seconds)
    var parts:Array = s.split(":");

    if(parts.length != 3)
    {
        return "invalid time. require HH:MM:SS";
    }

    var hour:int = int(parts[0]);
    var min:int = int(parts[1]);
    var sec:int = int(parts[2]);

    // check for errors in each of the time parts
    if(hour > 23 || min > 59 || sec > 59)
    {
        return "invalid time";
    }

    // determine if the hour is PM or AM
    var am_pm:String = hour >= 12 ? "PM" : "AM";

    // modding the hour by 12 will give you the correct traditional hour
    hour %= 12;
    if(hour == 0) hour = 12; // 0 is a special case

    // create the padding for each time part (prepend with a 0 if it's less than 10)
    var hourPad:String = hour < 10 ? "0" : "";
    var minPad:String = min < 10 ? "0" : "";
    var secPad:String = sec < 10 ? "0" : "";

    // string it all together
    return hourPad + hour.toString() + ":" + minPad + min.toString() + ":" + secPad + sec.toString() + " " + am_pm;
}

Upvotes: 1

Related Questions