web-dev-qa-db-fra.com

Définir la date et l'heure à l'aide du shell ADB

J'essaie de définir la date et l'heure à l'aide du shell ADB mais celui-ci ne renvoie que l'heure actuelle.

J'ai essayé:

adb Shell date -s YYYYMMDD.HHmmss

et le temps unix comme:

adb Shell date 1318349236

des idées?

15
Abraão Caldas

Pour économiser de l'espace de stockage, Android, comme beaucoup d'autres systèmes intégrés, utilise binaires multi-appels pour mettre en œuvre ses outils de base de ligne de commande tels que date.

Le périphérique Android peut inclure toolbox ou toybox (ou les deux) binaires en fonction de la version. Vous pouvez vérifier quelle implémentation de l'outil date disponible sur votre périphérique en exécutant les commandes toolbox date et toybox date. Ensuite, vous pouvez utiliser celui qui affiche la date actuelle. Par exemple, pour un appareil Android 6.0+, cela pourrait ressembler à:

$ adb Shell toybox date
Mon Jul 31 21:09:28 CDT 2017

$ adb Shell toolbox date
date: no such tool

Pour définir la date et l'heure à l'aide de toolbox date, utilisez le format YYYYMMDD.HHmmss:

adb Shell "su 0 toolbox date -s 20161231.235959"

Dans le cas de toybox date, utilisez le format MMDDhhmm[[CC]YY][.ss]:

adb Shell "su 0 toybox date 123123592016.59"
35
Alex P.

Android 6.0 a un nouveau format de date:

Default SET format is "MMDDhhmm[[CC]YY][.ss]", that's (2 digits each)
month, day, hour (0-23), and minute. Optionally century, year, and second.

Et le réglage avec -s ne fonctionne plus. Voici la commande set actualisée:

Exemple de la commande mise à jour:

(à l'intérieur d'un shell adb)

date 060910002016.00                              

aura pour résultat: 

Thu Jun  9 10:00:00 GMT 2016

Remarque:La commande ne sera pas visible immédiatement sur le périphérique car elle ne déclenchera aucune diffusion de changement d'heure, mais elle sera visible dans une minute.

Pour contourner ce problème, vous pouvez ajouter cette diffusion manuellement de cette façon:

date 060910002016.00 ; am broadcast -a Android.intent.action.TIME_SET

Pour appeler ceci avec une commande adb:

adb Shell 'date 060910002016.00 ; am broadcast -a Android.intent.action.TIME_SET'
22
Amir Uval
adb Shell date -s `date +%G%m%d.%H%M%S`

Au début, il obtient la date actuelle de votre machine et la définit sur la cible Android . Cette approche devrait fonctionner sous Linux/Mac/Cygwin.

14
Greg Rynkowski

Vous devez indiquer la date si vous souhaitez la modifier . "- s" modifie le format SET. Le format SET par défaut est "MMJJhhmm [[CC] YY] [.ss]".

J'ai testé avec succès les commandes suivantes:

adb root
adb Shell "date `date +%m%d%H%M%Y.%S`"
11
Ivan Kovtun

Sur certains appareils comme RTAndroid cela fonctionne peut-être aussi:

adb Shell "su 0 date `date +%m%d%H%M%Y.%S`"
2
Hpsaturn

Pour que cela fonctionne sur mon Xperia S , j'ai dû interrompre les commandes comme suit:

> adb Shell
# su -
# date /* see current date */
# date -s YYYYmmdd

Motif: mon appareil était revenu au début de l'heure Linux et je n'étais pas particulièrement inquiet, tout ce que je voulais, c'était régler la date correcte - ce que je ne pouvais pas faire, par le système, car mon MIUI personnalisé ROM a continué à planter ...

2
Midas

En développant la réponse de @ uval, vous pouvez utiliser les éléments suivants pour mettre à jour la date et l'heure sur le périphérique Android en fonction de l'heure sur votre ordinateur Windows:

set dateYYYY=%date:~10,4%
set dateMM=%date:~4,2%
set dateDD=%date:~7,2%
set timeHH=%time:~0,2%
set timeMM=%time:~3,2%
set timeSS=%time:~6,2%

adb Shell su -c date %dateMM%%dateDD%%timeHH%%timeMM%%dateYYYY%.%timeSS%
adb Shell su -c am broadcast -a Android.intent.action.TIME_SET

Testé sur un appareil Android 6.0 enraciné et un PC Windows 10.

1
superbeef150

Le bon format qui a fonctionné pour moi est yyyyMMddHHmm.ss

0
Ranhiru Cooray