PHP5 ve Actionscript3 milisaniye cinsinden unix zaman damgası Başlarken

6 Cevap php

Actionscript yılında milisaniye Unix zaman damgası böyle elde edilir:

public static function getTimeStamp():uint
        {
            var now:Date = new Date();
            return now.getTime();
        }

Doc açıkça şöyle demektedir:

getTime():Number Returns the number of milliseconds since midnight January 1, 1970, universal time, for a Date object.

Ben o iz zaman, aşağıdaki döndürür:

824655597

So, 824655597 / 1000 / 60 / 60 / 24 / 365 = 0.02 years. This is obviously not correct, as it should be around 39 years.

Soru # 1: Burada ne yanlış?

Şimdi, PHP parçası üzerine: Ben de orada milisaniye cinsinden zaman damgası almak için çalışıyorum. microtime() function verilen argüman bağlı olarak, bir dize (0,29207800 1246365903) veya bir şamandıra (1246365134,01) döndürür ya. Ben damgaları kolay olduğunu düşündüm, çünkü ben kendimi bu yapmak için gidiyordu. Ama şimdi ben denedim ve bu şamandıra fark ve Actionscript benim sorunları ile birleştirmek olduğunu ben gerçekten hiçbir ipucu var.

Soru # 2: nasıl bir Unix zaman damgası milisaniye miktarını döndürür yapmak gerekir?

Zaman damgaları çok kolay olmalı, ben muhtemelen bu konuda .. üzgünüm şey eksik. Şimdiden teşekkürler.

EDIT1: Answered the first question by myself. See below.
EDIT2: Answered second question by myself as well. See below. Can't accept answer within 48 hours.

6 Cevap

Actionscript3 için new Date().getTime() çalışmalıdır.


PHP sadece time() 1 Ocak 1970 saniyede 00:00:00 GMT geçti zaman almak için arayabilirsiniz. İsterseniz milisaniye sadece do (time()*1000).

Eğer kullanırsanız microtime() milisaniye almak için 1000 ile ikinci bölümünü çarpın. Milisaniye almak ve bu yuvarlak 1000 ile ilk bölümünü çarpın. Sonra birlikte iki sayıyı ekleyin. Voila.

Ben işlevin dönüş türü olarak işaretsiz tamsayı kullanılır. Bu Numarası olmalıdır.

public static function getTimeStamp():Number
    	{
    		var now:Date = new Date();
    		return now.getTime();
    	}

Ben şimdi PHP5'ta milisaniye almak için işlevi var bence.

function msTimeStamp() {
    return round(microtime(1) * 1000);
}

PHP5 microtime () microtime() başına ve get_as_float argüman temin değilse, size "msn sec" böylece ilk bölümü milisaniyelik bir parçası ve ikinci olarak biçimlendirilmiş bir dize verir gibi mikrosaniye ile unix zaman damgası döndürür ikinci kısmıdır. Sadece ikiye bölünmüş ve zaman damgası, iki parça almak

Javascript, Actionscript ve PHP arasındaki milisaniye ile bir tamsayı olarak bir zaman damgası normalleştirmeye

Javascript / Actionscript:

function getTimestamp(){
    var d = new Date();
    return Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()).valueOf();
}

PHP:

function getTimestamp(){
    $seconds = microtime(true); // true = float, false = weirdo "0.2342 123456" format 
    return round( ($seconds * 1000) );
}

http://www.php.net/manual/en/function.gmmktime.php: at Yorumlarınız "sixg dot com evinde ben" de PHP nota bakın

EXCERPT: For most intents and purposes you can imagine that mktime() first converts your input parameters to GMT and then calls gmmktime() which produces a GMT timestamp.

So, time() always will return the same thing at the same actual moment, anywhere in the world.
gmmktime() and mktime(), when given specific time parameters, convert those time parameters FROM the appropriate timezone (GMT for gmmktime(), local time for mktime()), before computing the appropriate timestamp.


UPDATE:

PHP bazı sürümlerinde, milisaniye ile damgası bir dize olarak görüntülemek için çok büyük. Yani dize değerini almak için sprintf işlevini kullanın:

PHP

function getTimestamp($asString=false){
    $seconds = microtime(true); // false = int, true = float
    $stamp = round($seconds * 1000);
    if($asString == true){
        return sprintf('%.0f', $stamp);
    } else {
        return $stamp;
    }
}

PHP için basit cevap:

function exact_time() {
    $t = explode(' ',microtime());
    return ($t[0] + $t[1]);
}

Böyle bir şey:

$mili_sec_time = $_SERVER['REQUEST_TIME_FLOAT'] * 1000;

Istek başlar UNIX çağdan miliseconds temsil float türünü verir.