0

時間をナノ秒に変換する必要があります.bsd dateコマンドは適切ではありません.返される最高のものは秒です..date +"%H:%M:%S"戻ります17:33:07..

Mac の BSD 日付バージョンと Linux GNU 日付バージョンの間に違いがあるようです。最後のものはナノ秒を返すことができます。最初はできません..

シェルの代わりに Python または Ruby スクリプトを使用する必要がありますか? または、Macでナノ秒を取得する別のソリューションはありますか?

いいえ、実際にはいいえ%N

4

3 に答える 3

2

OSXdateコマンドはナノ秒を実行しませんが、OSX ではシステムからこれを取得できます。

たとえば、C では、これはシステムの稼働時間になります。

#include <inttypes.h>
#include <stdio.h>
#include <stdint.h>

#include <mach/mach_time.h>

int main(void)
{
        uint64_t t = mach_absolute_time();

        // Get ratio between mach_absolute_time units and nanoseconds.
        mach_timebase_info_data_t data;
        mach_timebase_info(&data);

        // Convert to nanoseconds.
        t *= data.numer;
        t /= data.denom;

        printf("%" PRIu64 "\n", t);

        return 0;
}

これを などに保存し、シェルからuptimens.c実行します。make uptimens

mac:~ ghoti$ ./uptimens
366181198555774
mac:~ ghoti$ 
于 2013-05-09T16:11:52.630 に答える
2

--versionオプションの存在のテストを使用して、Mac のコードを区別します。

if ! date --version >/dev/null 2>&1; then # Mac
    micro=$(perl -e 'use Time::HiRes qw( gettimeofday ); my ($a, $b) = gettimeofday; print $b;')
else
    micro=$(($(date +%N) / 1000))
fi

ただし、最高の精度gettimeofdayはマイクロ秒です。

于 2013-05-09T16:17:16.947 に答える
0
$ 日付 +%T.%N
11:05:07.894987100

これにより、ナノ秒の精度で現在の時刻が得られます。

于 2013-05-09T16:05:45.820 に答える