所以我有一个工作日列表,我需要检查它们是否是当日。该列表在“星期一/星期二”和“星期三-星期五”之间有所不同
我当前的解决方案是字符串比较,因此它仅检测当前的工作日是否写在列表项中。
这是当前的解决方案(在PHP btw中):
setlocale(LC_ALL, "danish");
$day = get_sub_field('dag'); // the field containing the user input day
$currentDay = strftime('%a', mktime());
$currentDayLower = strtolower($currentDay);
$dayLowercase = strtolower($day);
$class = '';
if(strpos($dayLowercase, $currentDayLower) !== false ){
$class = ' current-day';
} else{
$class = '';
}
我正在考虑将所有工作日组成一个数组,并将用户字段与该数组中的当前日期位置进行比较,但是我不确定这是否有效或什至可行。
是否有任何明显的方法或替代方法可能比我目前正在做的事情容易?
任何输入,不胜感激。
编辑:
我找到了一个可行的解决方案,并将其发布为答案(尽管我无法在两天内选择它作为答案)。感谢您的投入!
因此,正如我所发现的,从丹麦工作日字符串中创建日期时间相当复杂。从英语,格式到丹麦语要容易得多。
因此,我必须通过将你们的部分答案缝合在一起来使它有所不同。
<?php while ( have_rows('aabningstider_repeater', 'option') ) : the_row();
// vars
$day = get_sub_field('dag');
$timer = get_sub_field('aabne_timer');
$dayLower = strtolower($day);
$weekArray = array('mandag', 'tirsdag', 'onsdag', 'torsdag', 'fredag', 'lørdag', 'søndag' );
$dayArray = preg_split('/[\s,-]+/', $dayLower);
$today = date('w') - 1;
$class = '';
if(is_array($dayArray)){
$days = [];
foreach ($dayArray as $daySingle ) {
array_push($days, array_search($daySingle, $weekArray));
}
if($today > $days[0] && $today < $days[1]){
$class = ' current-day in-between-days';
} elseif($today == $days[0] || $today == $days[1]){
$class = ' current-day';
} else{
$class = '';
}
}
endwhile; ?>
我很确定这将一直有效,直到有一天我发现一个重大缺陷。在那之前,它会做。
任何反馈或优化,我们将不胜感激。并感谢您的所有投入!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句