Я пытаюсь изменить время моего Raspberry Pi, используя php, JavaScript и shell_exec ().
Код JavaScript
<script type="application/javascript">
function settime()
{
var time = new Date();
var date = time.getDate();
var month = time.getMonth()+1;
var year = time.getFullYear();
var hours = time.getHours();
var minutes = time.getMinutes();
var seconds = time.getSeconds();
document.getElementById("hh").value = hours;
document.getElementById("minute").value = minutes;
document.getElementById("ss").value = seconds;
document.getElementById("dd").value = date;
document.getElementById("mm").value = month;
document.getElementById("yy").value = year;
return true;
}
Форма HTML я использовал
< form action="" method="post">
<input type="hidden" id="hh" name="hh" />
<input type="hidden" id="minute" name="minute" />
<input type="hidden" id="ss" name="ss" />
<input type="hidden" id="dd" name="dd" />
<input type="hidden" id="mm" name="mm" />
<input type="hidden" id="yy" name="yy" />
<input type="submit" class="btn btn-success" onclick="settime();" value="Set same as your device time" name="set_dt" />
<a class="btn btn-danger" href="" >Cancle changing time</a>
</form>
И PHP-скрипты, которые я использовал
if(isset($_POST['set_dt']))
{
$time=$_POST['hh'].":".$_POST['minute'].":".$_POST['ss'];
$dd="0";
$mm="0";
//To add 0 before date and month if less than 10 like => 09, 05, etc
if($_POST['dd']<10)$dd.=$_POST['dd'];else $dd=$_POST['dd'];
if($_POST['mm']<10)$mm.=$_POST['mm'];else $mm=$_POST['mm'];
$date=$_POST['yy'].$mm.$dd;
echo $date." ".$time;
echo shell_exec('sudo date +%Y%m%d -s "$date"');
echo shell_exec('sudo date +%T -s "$time"');
shell_exec('hwclock -w');
}
все эти коды находятся на одной странице «setting.php»
Когда я нажимаю Set same as your device time
кнопка, функция JavaScript settime()
получить правильное время и назначить эти скрытые поля ввода.
И время отображается echo $date." ".$time;
в правильном формате.
код echo shell_exec('sudo date +%Y%m%d -s "$date"');
Не работает, я имею в виду, что это не делает каких-либо изменений в дате Pi Linux
и когда echo shell_exec('sudo date +%T -s "$time"');
выполняется это
всегда показывать 00:00:00, а время pi также становится 00:00:00.
Я не знаю, почему он не может изменить дату и время машины.
Я выполнил эту задачу более сотни раз, но дата и время не обновляются.
Пожалуйста, дайте несколько советов, потому что это основная часть моего проекта.
У меня нет устройства с часами реального времени, и Пи перезагружается несколько раз из-за отключения питания, и у меня нет батареи для постоянного питания.
Задача ещё не решена.
Других решений пока нет …