שאלה כיצד לקבל את זמן יוניקס הנוכחי milliseconds ב באש?


כיצד ניתן לקבל את זמן יוניקס הנוכחי במילי-שניות (כלומר, מספר אלפיות השנייה מאז עידן יוניקס בינואר 1 1970)?


197
2018-06-14 16:04






תשובות:


זה:

date +%s 

יחזיר את מספר שניות מאז התקופה.

זה:

date +%s%N

מחזירה את השניות ואת nanoseconds הנוכחי.

לכן:

date +%s%N | cut -b1-13

ייתן לך את מספר milliseconds מאז עידן - הנוכחי שניות בתוספת שלושה שמאל של nanoseconds.


ומ מייקי - echo $(($(date +%s%N)/1000000)) (חלוקת על ידי 1000 רק מביא microseconds)


234
2018-06-14 16:10



אני תוהה כמה ms לחתוך מוסיף :-) - Kyle Brandt♦
או אם אתה רוצה לעשות את כל זה בתוך פגז, הימנעות תקורה יקר של תהליך נוסף (למעשה, אנו נמנעים את הבעיה כאשר מספר הספרות ב% + s + N שינויים): echo $(($(date +%s%N)/1000)) - MikeyB
זה העיקרון של העניין ... הימנעו ממספר הקסמים והקוד את מה שאתם באמת מתכוון. - MikeyB
אני חושב שזה שווה לציין כי האיש ביקש יוניקס, לא לינוקס, ואת התשובה הנוכחית הנוכחית (תאריך +% s% N) לא עובד על מערכת AIX שלי. - Pete
@ Pete +1 זהה עבור OS X, ו FreeBSD - ocodo


אתה יכול פשוט להשתמש %3N כדי לחתוך את nanoseconds על 3 ספרות משמעותיות ביותר (אשר אז הם אלפיות השנייה):

$ date +%s%3N
1397392146866

זה עובד למשל על קובונטו שלי 12.04.

אבל להיות מודעים לכך %N לא ניתן ליישם בהתאם למערכת היעד שלך. למשל נבדק על מערכת מוטבע (rootros buildroot, מלוקט באמצעות זרוע HF לא חוצה כלי זרוע) לא היה %NYou

$ date +%s%3N
1397392146%3N

(וגם את הטבלט אנדרואיד שלי (לא מושרשת) אין %N).


80
2018-04-13 12:34



@warren: ראיתי שערכת ושינית את 1397392146%3N ל 1397392146%N, אבל התפוקה של 1397392146%3N זה מה שראיתי באמת על קונסולת עסוק של לוח אנדרואיד שלי. האם תוכל להסביר את העריכה שלך? - Joe
ההערה של Warren מההיסטוריה היא "שונה מ 3 ל 6, כמו 3 רק לוקח אותך microseconds". העריכה שלו נראית מזויפת לחלוטין; אתה צריך לגלגל אותו בחזרה. - bukzor
זוהי תכונה של גנו Coreutils במיוחד. בסופו של דבר, זה מיושם gnulib כאן: github.com/gagern/gnulib/blob/.... - telotortium
כנראה נקודה שם הגיוני. date +%s.%3N הדפסים 1510718281.134. - darksky


date +%N לא עובד על מערכת ההפעלה X, אבל אתה יכול להשתמש באחד

  • אודם: ruby -e 'puts Time.now.to_f'
  • פיתון: python -c 'import time; print time.time()'
  • node.js: node -e 'console.log(Date.now())'
  • PHP you php -r 'echo microtime(TRUE);'
  • 99 קישור you wget -qO- http://www.timeapi.org/utc/now?\\s.\\N
  • או עבור אלפיות השנייה מעוגלים השנייה הקרובה date +%s000

51
2017-09-02 11:16



לשלמות ... node -e 'console.log(Date.now())' - slf
שימוש ב- PHP: php -r 'echo microtime(TRUE);' - TachyonVortex
בטח, אתה רק צריך לחכות אלה פרשנים להתחמם. זה עובד גם: wget -qO- http://www.timeapi.org/utc/now?\\s.\\N - Camilo Martin
או, אם אתה לא ממש צריך את milliseconds אבל רק את הפורמט הנכון: date +%s000 - Lenar Hoyt
apple.stackexchange.com/questions/135742/... יש הוראות לעשות את זה OSX דרך Brew's coreutils - sameers


רק לזרוק את זה שם, אבל אני חושב הנוסחה הנכונה עם החלוקה יהיה:

echo $(($(date +%s%N)/1000000))

8
2017-09-07 21:22





הפתרון שלי הוא לא הכי טוב אבל עבד בשבילי.

date +%s000

אני רק צריך להמיר תאריך כמו 2012-05-05 כדי milliseconds.


6
2018-05-09 20:11



מדהים גרזן, lol :) - k06a
אתה חייב להיות מישהו מבין חברי לעבודה. - Nakilon


עבור אנשים המציעים הפעלת תוכניות חיצוניות כדי לקבל את מילישניות ... בקצב זה, אתה יכול גם לעשות את זה:

wget -qO- http://www.timeapi.org/utc/now?\\s.\\N

הצבע להיות: לפני בחירת כל תשובה מכאן, אנא זכור כי לא כל התוכניות יפעלו תחת אחת שלמה. למדוד!


6
2018-06-23 13:17



אתה לא שואל את המערכת המקומית עבור הזמן. מה שאני מניח הוא משתמע בשאלה. אתה גם תלוי בחיבור לרשת. - orkoden
@orkoden השאלה במפורש מבקשת "מספר אלפיות השנייה מאז עידן יוניקס 1 בינואר 1970". כמו כן, אני יותר של הצבעה על איך אתה לא צריך פעם אש של רובי או Python (או wget) רק כדי לקבל את הזמן - או שזה נעשה באמצעות ערוץ מהיר או אלפיות השנייה לא משנה. - Camilo Martin
כן, הבנתי שאתה נותן פתרון גרוע יותר כדי להדגיש את הפגמים של פתרונות רעים. ניסיתי כמה פתרונות ומדדתי את הזמן. lpaste.net/119499 התוצאות הן סוג של מעניין. אפילו על מכונת i7 מהר מאוד date לוקח 3 ms לרוץ. - orkoden
@orkoden בדיקות נחמד! איזו מערכת הפעלה? זה יכול להיות קשור להולכת תהליך תקורה. - Camilo Martin
@ נקילון ובגלל זה אין להסתמך על נוחות, כמו אלה לכל דבר. - Camilo Martin


פתרון זה עובד על MACOS.

אם אתה מחשיב שימוש בסקריפט bash ויש לך python זמין, אתה יכול להשתמש בקוד הזה:

#!/bin/bash

python -c 'from time import time; print int(round(time() * 1000))'

3
2018-02-05 14:26



למה להצביע למטה? - Frank Thonig
לא נראה מוצדק במיוחד. הרמז על החץ למטה אומר "תשובה זו אינה שימושית", אבל IMO זה שימושי. אולי הם רצו שתעשה את זה בפתרון פייתון. זה יהיה פשוט וגם לעבוד בסדר כמו פקודה bash. - Andrew Schulman
אל תדאג יותר מדי על downvotes (זה לא שלי) ... במיוחד אם הם אנונימיים (שממנו לא ניתן ללמוד מה נראה לא בסדר, נכון?). רק כדי לעבד אותך לעבד את זה ... הנה הולך עוד +1 ... לנחש מה: אתה מותר גם "להצביע" עכשיו, נכון? - Pierre.Vriens
נראה שהירידה נגרמה על ידי בעיה במערכת. מאז הוא הוסר, שוב על ידי המערכת. - Michael Hampton♦