PHP's microtime in TypeScript

How to use

Install via yarn add locutus and import: import { microtime } from 'locutus/php/datetime/microtime'.

Or with CommonJS: const { microtime } = require('locutus/php/datetime/microtime')

Use a bundler that supports tree-shaking so you only ship the functions you actually use. Vite, webpack, Rollup, and Parcel all handle this. For server-side use this is less of a concern.

Examples

These examples are extracted from test cases that automatically verify our functions against their native counterparts.

#codeexpected result
1var $timeStamp = microtime(true) $timeStamp > 1000000000 && $timeStamp < 2000000000true
2/^0\.[0-9]{1,6} [0-9]{10,10}$/.test(microtime())true

Here's what our current TypeScript equivalent to PHP's microtime looks like.

export function microtime(getAsFloat?: boolean): string | number {
// discuss at: https://locutus.io/php/microtime/
// original by: Paulo Freitas
// improved by: Dumitru Uzun (https://duzun.me)
// example 1: var $timeStamp = microtime(true)
// example 1: $timeStamp > 1000000000 && $timeStamp < 2000000000
// returns 1: true
// example 2: /^0\.[0-9]{1,6} [0-9]{10,10}$/.test(microtime())
// returns 2: true

let s = 0
let now = 0
if (typeof performance !== 'undefined' && performance.now && performance.timing) {
now = (performance.now() + performance.timing.navigationStart) / 1e3
if (getAsFloat) {
return now
}

// Math.round(now)
s = now | 0

return Math.round((now - s) * 1e6) / 1e6 + ' ' + s
} else {
now = (Date.now ? Date.now() : new Date().getTime()) / 1e3
if (getAsFloat) {
return now
}

// Math.round(now)
s = now | 0

return Math.round((now - s) * 1e3) / 1e3 + ' ' + s
}
}

Improve this function

Locutus is a community effort following The McDonald's Theory: we ship first iterations, hoping others will improve them. If you see something that could be better, we'd love your contribution.

View on GitHub · Edit on GitHub · View Raw


« More PHP datetime functions


Star