Datum en tijd naar Nederlands bij sorteren

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Hans De Ridder

Hans De Ridder

07/01/2018 18:45:18
Quote Anchor link
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
<?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
Edit:
Ik heb code-tags geplaatst. Gelieve dit in het vervolg zelf toe te voegen aan je bericht.
Zie ook: Veel gestelde vragen: Welke UBB-codes kan ik gebruiken.
Gewijzigd op 08/01/2018 08:57:58 door - Ariën -
 
PHP hulp

PHP hulp

20/04/2024 00:06:22
 
- Ariën  -
Beheerder

- Ariën -

08/01/2018 08:57:17
Quote Anchor link
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.
Gewijzigd op 08/01/2018 08:59:14 door - Ariën -
 
Hans De Ridder

Hans De Ridder

08/01/2018 14:14:11
Quote Anchor link
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..
 
- Ariën  -
Beheerder

- Ariën -

08/01/2018 14:22:26
Quote Anchor link
Je moet de date-functie inderdaad vervangen door strftime.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
strftime($date_format, $last_modified)


Met als format in je $date_format-argument :
%d %B %Y %H:%M:%S
 
Hans De Ridder

Hans De Ridder

08/01/2018 17:31:34
Quote Anchor link
Ik heb het nu zo gewijzigd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
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.
 
- Ariën  -
Beheerder

- Ariën -

08/01/2018 17:32:52
Quote Anchor link
Dan zal de locale-setting niet kloppen, met wat je OS gebruikt.
Om welke gaat het?
Gewijzigd op 08/01/2018 17:33:03 door - Ariën -
 
Hans De Ridder

Hans De Ridder

08/01/2018 17:44:22
Quote Anchor link
Op gedeelde server:

Linux cloudblonde.managedomain.nl 3.16.0-4-amd64 #1 SMP Debian 3.16.43-2 (2017-04-30) x86_64
 
- Ariën  -
Beheerder

- Ariën -

08/01/2018 17:47:50
Quote Anchor link
Mail je hosting eens of ze de Nederlandse locale kunnen toevoegen.
 
Hans De Ridder

Hans De Ridder

09/01/2018 12:04:35
Quote Anchor link
De hosting had een afwijkende locale voor het Nederlands.
Ik heb het nu opgelost.
Bovenaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
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.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$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);
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.