преобразование даты и математика в ActionScript 3.0 - PullRequest
1 голос
/ 03 апреля 2011

У меня есть два значения, строка в форме StartTime YYYY-MM-DD HH:MM:SS и Duration в форме HH:MM:SS. из этих двух значений мне нужно определить конечное время и поместить его в тот же формат, что и начальное время.

Я пытался сделать что-то вроде

startTimeArray:Array = StartTime.split(/[ -:]/);
var date:Date = new Date(startTimeArray[0], startTimeArray[1]-1, startTimeArray[2], startTimeArray[3], startTimeArray[4], startTimeArray[5] );

но расщепление конечно приводит к строкам, а не числам, и я не могу понять, как преобразовать все эти отрезки времени в числа, и после этого я не вижу способа применить математику, добавив объект Duration Date к объекту StartTime Date, если я смогу их правильно преобразовать.

Я иду по хорошему пути здесь? если так, как я могу преобразовать массив строк в числа и как я могу добавить продолжительность к времени начала? Спасибо

Ответы [ 2 ]

2 голосов
/ 03 апреля 2011
const start:String = "2011-04-03 01:39:48";
const startArray:Array = start.split(/[: -]/g);
var startDate:Date = new Date(
    startArray[0], startArray[1]-1, startArray[2],
    startArray[3], startArray[4], startArray[5]
);
const duration:String = "02:10:10";
const durationArray:Array = duration.split(/:/g);
var durationDate:Date = new Date();
durationDate.setTime(
    durationArray[0] * 3600000 + /* hour = 60m * 60s * 1000ms */
    durationArray[1] * 60000 + /* minute = 60s * 1000ms */
    durationArray[2] * 1000 /* second = 1000ms */
);
var finalDate:Date = new Date();
finalDate.setTime(startDate.time + durationDate.time);
trace(startDate);
trace(durationDate.time);
trace(finalDate);

Выходы:

Sun Apr 3 01:39:48 GMT-0300 2011
7810000
Sun Apr 3 03:49:58 GMT-0300 2011
1 голос
/ 03 апреля 2011

Сначала вы захотите разделить дату и время, а затем поработать с массивами.

var date_:String = StartTime.substring(0,StartTimet.indexOf(" "));
var time_:String = StartTime.substring(StartTime.indexOf(" ")+1, StartTime.length);
trace(date_); // YYYY-MM-DD
trace(time_); // HH:MM:SS

Затем разбить дату на массив

var date_array:Array = StartTime.split("-");

Привести элементымассива с Number

Затем сделайте то же самое для времени, но используйте «:» для разделения.
Продолжительность может быть разделена таким же образом.Затем просто используйте обычное сложение после приведения.

var d:Date = new Date(year,month,date,hour,minutes,seconds);
var d_added:Date = new Date(year,month,date,hour+duration_hour,
              minutes+duration_minutes,seconds+duration_seconds);
...