Zamanın İngilizce gösterimlerini zaman damgalarına dönüştürmek için iyi bir sınıf/kütüphane bilen var mı?Turkish to Time
Amaç, "on yıl sonra" ve "üç hafta" ve "10 dakikada" gibi doğal dil ifadelerini dönüştürmek ve bunlar için en iyi eşleşme unix zaman damgasını çalışmaktır.
Devam etmek için bazı oldukça zayıf ve test edilmemiş kodlarım hackledim, ancak eminim takvimler ve benzerleri için harika ayrıştırıcılar var.
private function timeparse($timestring)
{
$candidate = @strtotime($timestring);
if ($candidate > time()) return $candidate; // Let php have a bash at it
//$thisyear = date("Y");
if (strpos($timestring, "min") !== false) // Context is minutes
{
$nummins = preg_replace("/\D/", "", $timestring);
$candidate = @strtotime("now +$nummins minutes");
return $candidate;
}
if (strpos($timestring, "hou") !== false) // Context is hours
{
$numhours = preg_replace("/\D/", "", $timestring);
$candidate = @strtotime("now +$numhours hours");
return $candidate;
}
if (strpos($timestring, "day") !== false) // Context is days
{
$numdays = preg_replace("/\D/", "", $timestring);
$candidate = @strtotime("now +$numdays days");
return $candidate;
}
if (strpos($timestring, "year") !== false) // Context is years (2 years)
{
$numyears = preg_replace("/\D/", "", $timestring);
$candidate = @strtotime("now +$numyears years");
return $candidate;
}
if (strlen($timestring) < 5) // 10th || 2nd (or probably a number)
{
$day = preg_replace("/\D/", "", $timestring);
if ($day > 0)
{
$month = date("m");
$year = date("y");
return strtotime("$month/$day/$year");
}
else
{
return false;
}
}
return false; // No can do.
}
nasıl üç yıl, iki gün ve beş dakika" hakkında geleceğe "girdi olarak? – chelmertz
Evet, tam olarak böyle şeyler. İhtiyacım olan bu. –
"üç yıl, iki gün ve beş dakika" ve ISO8601 aralık kolayca çevirmek gerektiğini benzer: "P3Y2DT5M" Bir DateInterval yem ve bir DateTime nesnesine ekleyebilirsiniz. – dnagirl