Ik heb een leuk scriptje gevonden om files
uit een dir. te sorten op plaatsing/wijzigingsvolgorde.
Ik heb al wat geprobeerd om de tekst en de juiste datum
in het Nederlands te zetten met:
setlocale(LC_TIME, "nl_NL"); en met strftime("d F Y");
Maar zie niks wijzigen. Waarschijnlijk verkeerde plek.


<?php
function Sort_Directory_Files_By_Last_Modified($dir, $sort_type = 'descending', $date_format = "d F Y H:i:s.")
{

$files = scandir($dir);

$array = array();

foreach($files as $file)
{
	if($file != '.' && $file != '..')
	{
		$now = time();
		$last_modified = filemtime($dir.$file);

		$time_passed_array = array();

		$diff = $now - $last_modified;

		$days = floor($diff / (3600 * 24));

		if($days)
		{
		$time_passed_array['days'] = $days;
		}

		$diff = $diff - ($days * 3600 * 24);

		$hours = floor($diff / 3600);

		if($hours)
		{
		$time_passed_array['hours'] = $hours;
		}

		$diff = $diff - (3600 * $hours);

		$minutes = floor($diff / 60);

		if($minutes)
		{
		$time_passed_array['minutes'] = $minutes;
		}

		$seconds = $diff - ($minutes * 60);

		$time_passed_array['seconds'] = $seconds;

	$array[] = array('file'         => $file,
		             'timestamp'    => $last_modified,
		             'date'         => date ($date_format, $last_modified),
		             'time_passed'  => $time_passed_array);
	}
}

usort($array, create_function('$a, $b', 'return strcmp($a["timestamp"], $b["timestamp"]);'));

if($sort_type == 'descending')
{
krsort($array);
}
return array($array, $sort_type);
}

$dir = $_SERVER['DOCUMENT_ROOT'].'uploaded_files/activiteit/jpg/';

$array = Sort_Directory_Files_By_Last_Modified($dir);

// Info Array
$info = $array[0];

// Sort Type
$sort_type = $array[1];

echo '<h3>'.$dir.'</h3>';

echo 'Order by: Last Modified ('.$sort_type.')<br />';

foreach($info as $key => $detail)
{
	echo '<h4 style="color: #3B4F9F;">'.$detail['file'].'</h4>';

	echo 'Laatste wijziging: '.$detail['date'].'<br />';

	$time_passed = '';

	foreach($detail['time_passed'] as $type => $value)
	{
	$time_passed .= $value." ".$type.", ";
	}

	$time_passed = "<span style='color: #377420;'>".rtrim($time_passed, ", ")."</span> ago";

	echo $time_passed."nn";

}
?>


Hier vind je een (tijdelijke) link:

https://www.pctraverse.nl/list_date.php
Maar ik zie toch geen strftime()-functie terugkeren in je code. Dus het is niet verwonderlijk. ;-)

Let ook op dat de setting "nl_NL" afhankelijk is van je OS.
Ik heb geprobeerd de strftime()-functie te plaatsen.
Maar gaf telkens 'kan pagina niet openen'.
Vandaar dat ik het heb weggehaald ivm de link.
Maar neem aan dat ik de date moet weghalen en daar de strftime voor in de plek moet zetten.
Kun je aub een voorbeeld geven..

Je moet de date-functie inderdaad vervangen door strftime.


strftime($date_format, $last_modified)


Met als format in je $date_format-argument :
%d %B %Y %H:%M:%S
Ik heb het nu zo gewijzigd:

function Sort_Directory_Files_By_Last_Modified($dir, $sort_type = 'descending', $date_format = "%d %B %Y %H:%M:%S")
.
.
.
 'date' => strftime($date_format, $last_modified),


Maar er verandert niks.
De verstreken tijd blijft wel kloppen.
Dan zal de locale-setting niet kloppen, met wat je OS gebruikt.
Om welke gaat het?
Op gedeelde server:

Linux cloudblonde.managedomain.nl 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2 (2017-04-30) x86_64
Mail je hosting eens of ze de Nederlandse locale kunnen toevoegen.
De hosting had een afwijkende locale voor het Nederlands.
Ik heb het nu opgelost.
Bovenaan:

setlocale(LC_ALL, 'nl_NL.UTF-8');
date_default_timezone_set('Europe/Amsterdam');


En voor de verstreken tijd heb ik dit gebruikt.
Maar is misschien wel andere mogelijkheid?
In principe blijven bestanden ook maar 2 weken bestaan.


$time_passed = str_replace("seconds","seconden", $time_passed);
$time_passed = str_replace("minutes","minuten", $time_passed);
$time_passed = str_replace("hours","uren", $time_passed);
$time_passed = str_replace("days","dagen", $time_passed);

Reageren