tl; dr
Java 9 e versioni successive: risoluzione fino a nanosecondi durante l'acquisizione del momento corrente. Sono 9 cifre della frazione decimale.
Instant.now()
2017-12-23T12: 34: 56.123456789Z
Per limitare a microsecondi , troncare .
Instant // Represent a moment in UTC.
.now() // Capture the current moment. Returns a `Instant` object.
.truncatedTo( // Lop off the finer part of this moment.
ChronoUnit.MICROS // Granularity to which we are truncating.
) // Returns another `Instant` object rather than changing the original, per the immutable objects pattern.
2017-12-23T12: 34: 56.123456Z
In pratica, vedrai solo i microsecondi catturati con .nowgli orologi hardware dei computer convenzionali contemporanei non sono precisi in nanosecondi .
Dettagli
Le altre risposte sono un po 'obsolete a partire da Java 8.
java.time
Java 8 e versioni successive vengono fornite con il framework java.time . Queste nuove classi soppiantano le fastidiose classi data-ora fornite con le prime versioni di Java come java.util.Date/.Calendar e java.text.SimpleDateFormat. Il framework è definito da JSR 310, ispirato a Joda-Time , ampliato dal progetto ThreeTen-Extra.
Le classi in java.time si risolvono in nanosecondi , molto più fini dei millisecondi usati sia dalle vecchie classi data-ora che da Joda-Time. E più fine dei microsecondi richiesti nella Domanda.

Clock Implementazione
Sebbene le classi java.time supportino dati che rappresentano valori in nanosecondi, le classi non generano ancora valori in nanosecondi. I now()metodi utilizzano la stessa implementazione orologio antico quanto le vecchie classi data-ora, System.currentTimeMillis(). Abbiamo la nuova Clockinterfaccia in java.time ma l'implementazione per quell'interfaccia è lo stesso vecchio orologio dei millisecondi.
Quindi potresti formattare la rappresentazione testuale del risultato di ZonedDateTime.now( ZoneId.of( "America/Montreal" ) )per vedere nove cifre di un secondo frazionario, ma solo le prime tre cifre avranno numeri come questo:
2017-12-23T12:34:56.789000000Z
Nuovo orologio in Java 9
Le implementazioni OpenJDK e Oracle di Java 9 hanno una nuova Clockimplementazione predefinita con una granularità più fine, fino alla piena capacità in nanosecondi delle classi java.time.
Vedere il problema OpenJDK, Aumentare la precisione dell'implementazione di java.time.Clock.systemUTC () . Questo problema è stato implementato con successo.
2017-12-23T12:34:56.123456789Z
Su un MacBook Pro (Retina, 15 pollici, fine 2013) con macOS Sierra, ottengo il momento corrente in microsecondi (fino a sei cifre della frazione decimale).
2017-12-23T12:34:56.123456Z
Orologio hardware
Ricorda che anche con una nuova Clockimplementazione più precisa, i risultati possono variare a seconda del computer. Java dipende dall'orologio dell'hardware del computer sottostante per conoscere il momento corrente.
- La risoluzione dei clock hardware varia ampiamente. Ad esempio, se l'orologio hardware di un particolare computer supporta solo la granularità di microsecondi , tutti i valori di data e ora generati avranno solo sei cifre frazionarie di secondo con le ultime tre cifre pari a zero.
- La precisione degli orologi hardware varia notevolmente. Solo perché un orologio genera un valore con diverse cifre di frazione decimale di secondo, quelle cifre potrebbero essere imprecise, solo approssimazioni, alla deriva rispetto al tempo effettivo come potrebbe essere letta da un orologio atomico . In altre parole, solo perché vedi un gruppo di cifre a destra del segno decimale non significa che puoi fidarti che il tempo trascorso tra tali letture sia vero fino a quel grado minuto.