将数组中的天数转换为星期范围内的日期

时间:2017-09-22 09:18:50

标签: php arrays date datetime

我有像这样的日子:

$days = ['Monday','Tuesday','Thursday','Friday','Sunday'];

我想将其转换为一周范围的日期格式,例如,如果今天的日期是2017年9月28日,我希望结果在数组中看起来像这样:

$dateResult = ['28 Sep','29 Sep','01 Oct', '02 Oct', '03 Oct']

它会在今天开始的一周范围内找到上述格式的日期

3 个答案:

答案 0 :(得分:0)

这将考虑从今天起7天。

$days = ['Monday','Tuesday','Thursday','Friday','Sunday'];

$ret = [] ;
for( $i = 0; $i < 7; $i ++) {
    $t = strtotime('+' . $i . ' day') ;
    if( in_array( Date('l', $t), $days ) ) {
        $ret[] = Date('d M', $t) ;
    }
}
print_r($ret) ;

答案 1 :(得分:0)

var i=0;
var lat=29;
var lt=0;
var ln=0;
var lon=345;
var n=0;
var c=1;
var ti=0;
var num=0;
var sper=0;
var temp=0;
var flag=0;

var mat = []; // 0=time 1=latitude 2=longitude 3=data

for(var nans=0; nans<100000; nans++)
{
    mat[nans] = new Array(4);
}
var n;
mat[ln]=lon;
//open the file
var fs = require('fs');
var ffile = 'file.txt';
document.write("sas");
// contenuto del file in memoria.
fs.readFile(ffile, function (err, logData) {
 
  if (err) throw err;
// logData è un Buffer, converti in Stringa.
  var t = logData.toString();
  var lung = t.length; 
//console.log(lung);
  var results = {};
//salto i commenti iniziali
while (n!='#')
    {
        i=i+1;
        n=t[i];
    }   
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//
ln=ln+1;  
mat[ln][2]=lon;
mat[c][0]=temp;
//start of cicle
for( ;n!=';' && i<lung;i++)
    {
        n=t[i];
        if (t[i]=='#' && t[i+1]=='#' && t[i+2]=='#')    
            {
                flag=1;
                i=i+4;
                if (lat+1>75)
                    {
                        lat=30;
                        lt=lt+1;
                        mat[lt][1]=lat;
                        temp=temp+1;
                    }
                else
                    {
                        lt=lt+1;
                        lat=lat+1;
                        mat[lt][1]=lat;
                    }
            }
        if (n==',')
            {
                mat[c][0]=temp;
                ti=i;
                while (t[ti-1]!=',' && t[ti-1]!=';' && t[ti-1]!='\n' && t[ti-1]!=' ' && t[ti-1]!='#' )
                    {
                        ti=ti-1;
                    }
                ti=i-ti;
                if (ti==0)
                    {
                        ti=sper;
                    }
                else
                    {
                        sper=ti;
                    }
                sper=ti;
                var str= t.substring(i,i-ti);
                num = parseFloat(str);
                mat[c][3]=num;      
                    if (lon+1>420)
                        {
                            lon=345;
                            ln=ln+1;
                            mat[ln][2]=lon;
                        }
                    else
                        {
                            lon=lon+1;
                            ln=ln+1;
                            mat[ln][2]=lon;
                        }
                c++;
                if (flag==0)
                    {
                        lt=lt+1;
                        mat[lt][1]=lat;
                    }
                else
                    {
                        flag=0;
                    }
            }
    }
i=i-1;
///////////////////////////////////////////////////////////////////////////////// end of cicle
    
var st=c;
mat[st][2]=mat[st-1][2]+1;
mat[st][1]=mat[st-1][1];
    for(c=1;c<st;c++)
        {
            console.log(c+' lat:'+mat[c][1]+' lon:'+mat[c][2]+' dato:'+mat[c][3]+' temp:'+mat[c][0]); 
        } 

var str= t.substring(i,i-sper);
num = parseFloat(str);
mat[c][3]=num;
mat[c][0]=temp;
console.log(c+' lat:'+mat[c][1]+' lon:'+mat[c][2]+' dato:'+mat[c][3]+' temp:'+mat[c][0]); 
console.log('fine');
//console.log(' lon:'+mat[clon][3]+' lat:'+lat+' '+mat[ffc-1][4] );
//console.log(ftemp + ' fis= '+ fis);
});

输出:

for ($i = 0; $i < 7; $i++) {
    /* Get day name i.e Friday, Saturday etc */
    $day_name    =     date("l", strtotime("+$i day"));
    /* Store result in array only if day is present in $days */
    if (in_array($day_name, $days)) {
        $result[]    =    date("d M", strtotime("next " . $day_name, strtotime("+". $i ." day")));
    }
}

答案 2 :(得分:-1)

首先,您需要将天数转换为数字。例如:1表示星期一,2表示星期二,依此类推。

//$days = ['Monday','Tuesday','Thursday','Friday','Sunday'];

$days_in_number = [1,2,4,5,7];

$r = array();
$today = date('N');
foreach($days_in_number as $x){
  $r[] = date('M-d',strtotime((($today-$x) * -1).' days'));
}

print_r($r);

注意:此代码仅适用于当前1周。