আমি কীভাবে ইউনিক্স টাইমস্ট্যাম্পগুলি তৈরি করতে পারি?


240

সম্পর্কিত প্রশ্নটি "ডেটটাইম টু ইউনিক্স টাইমস্ট্যাম্প" , তবে এই প্রশ্নটি আরও সাধারণ।

আমার শেষ প্রশ্নটি সমাধান করার জন্য আমার ইউনিক্স টাইমস্ট্যাম্প দরকার আমার আগ্রহগুলি পাইথন, রুবি এবং হাস্কেল, তবে অন্যান্য পদ্ধতিগুলি স্বাগত।

ইউনিক্স টাইমস্ট্যাম্পগুলি উত্পন্ন করার সহজতম উপায় কী?


আমি কিছুক্ষণ আগে একটি অনলাইন সরঞ্জাম তৈরি করেছি। quickhash.com/timestamp
এবি ক্যারল

@ ABCarrol আপনি কীভাবে আপনার অনলাইন সরঞ্জামটি ইউনিক্স টাইমস্ট্যাম্প সরবরাহ করে তা আনওয়ার হিসাবে ব্যাখ্যা করতে পারেন? দয়া করে এর জন্য একটি ম্যানুয়াল ইত্যাদি সংযুক্ত করুন। এটি প্রচুর ডেটা সরবরাহ করেছে বলে মনে হচ্ছে তবে লক্ষ্যটি কী তা আমি সত্যিই অনুসরণ করতে পারি না।
লিও লোপোল্ড হার্টজ 준영

gettimeofdayপসিক্স এবং লিনাক্সের সিস্কেল নাম: স্ট্যাকওভারফ্লো / কোয়েশনস / ১১303065৩০১/২ টোডো: কেন strace date +%dএটি কল করবেন না?
সিরো সান্তিলি 法轮功 冠状 病 六四 事件 法轮功

আপনি যদি কাজ করে থাকেন এবং বর্ধনের সময়সীমা (উদাহরণস্বরূপ মিনিট, দিন, ঘন্টা), আমি সম্প্রতি নিজের ব্যবহারের জন্য একটি সরঞ্জাম লিখেছিলাম সম্প্রতি ইউনিক্সটাইম.নিজা
গাই থাইরেট

উত্তর:


472

লিনাক্স বা ম্যাকোজে আপনি ব্যবহার করতে পারেন:

date +%s

কোথায়

  • +%s, সেকেন্ডগুলি 1970-01-01 00:00:00 ইউটিসি থেকে। (জিএনইউ কোরিউটিলস 8.24 তারিখের ম্যানুয়াল)

উদাহরণস্বরূপ এখন 1454000043।


1
সোলারিসে: ট্রাসের তারিখ 2> & 1 | গ্রেপ ^ সময় | awk '{মুদ্রণ $ 3}'
íubomír Mlích

BSD তারিখটিও +% গুলি সমর্থন করে। সম্ভবত সর্বজনীন, যেমন dateপসিক্স ২. এ সংজ্ঞায়িত হয়।
ডেরিকসন

@ ÍubomírMlích একটি স্মার্টস হোস্টে (সানোস 5.11 হেলেন্ট -20171026T003127Z), আমি উভয় /usr/bin/date +%s and / usr / xpg4 / বিন / তারিখ +% কাজ করছি। POSIX.2 সুপারিশের সাথে সম্মিলিত, আমি মনে করি এটি সমস্ত সোলারিতেও কাজ করে।
ডেরিকসন

দ্রষ্টব্য: 60 সেকেন্ড যুক্ত করতে: date -v+60S +%s1 দিন যোগ করতে: date -v+24H +%sএবং আরও কিছু। । ।
gMale

কেবলমাত্র 3 ডিজিট পর্যন্ত মিলিসেকেন্ড কীভাবে উত্পন্ন করা যায়?
পারভীন ভার্মা

110

রুবিতে:

>> Time.now.to_i
=> 1248933648

রেলগুলির জন্য আপনি ব্যবহার করতে পারেন Time.zone.now.to_i। যদিও এটি একইভাবে o / p দেবে Time.now.to)_iতবে Time.zone.now.to_iএটি Railsউপায়।
অদলবদল করুন

রেলগুলিতে, ./bin/rails runner "p Time.current.to_i"অন্য সমাধান is
জিপকম্পানি


17

curl icanhazepoch.com

মূলত এটি পরিষেবা হিসাবে ইউনিক্স টাইমস্ট্যাম্পস (ইউটিএএসএস)


3
হি, দুর্দান্ত এটি আমার শখের সাইটে অনুরূপ বৈশিষ্ট্য যুক্ত করতে আমাকে অনুপ্রাণিত করেছিল। curl -L -H "Accept: application/json" unixtimesta.mpআপনাকে দিবে{"datetime":"Thu, 19 Jul 2018 12:01:21 GMT","timestamp":1532001681}
ক্রেগ অ্যান্ডারসন


8

ইউনিক্স 'তারিখ' কমান্ড আশ্চর্যজনকভাবে বহুমুখী।

তারিখ -j -f "% a% b% d% T% Z% Y" "` তারিখ` "" +% s "

এর আউটপুট নেয় date, যা -f দ্বারা সংজ্ঞায়িত ফর্ম্যাটে থাকবে এবং তারপরে এটি প্রিন্ট করে (-j বলে যে তারিখ নির্ধারণের চেষ্টা করবেন না) ফর্মটিতে +% s, কয়েক সেকেন্ড পরে ফর্মটিতে।


4
date: invalid option -- 'j'
nyuszika7h

1
এটি একটি জিএনইউ তারিখের এক্সটেনশন, ইউনিক্স স্ট্যান্ডার্ডে (পসিক্স) নয়।
jlliagre

8
$ date +%s.%N

যেখানে (জিএনইউ কোরিউটিলস 8.24 তারিখের ম্যানুয়াল)

  • +%s, সেকেন্ডগুলি 1970-01-01 00:00:00 ইউটিসি থেকে
  • +%N, ন্যানোসেকেন্ডস (000000000..999999999) যুগের পর থেকে

উদাহরণ এখন আউটপুট 1454000043.704350695। আমি লক্ষ্য করেছি যে বিএসডি ম্যানুয়ালটিতে dateপতাকা সম্পর্কে সুনির্দিষ্ট ব্যাখ্যা অন্তর্ভুক্ত করা হয়নি +%s


আপনি কেন ন্যানোসেকেন্ডগুলি অন্তর্ভুক্ত করবেন +$N? এটি কি কিছু সিস্টেমে ইউনিক্স টাইমস্ট্যাম্পের অন্তর্ভুক্ত?
লিও লোপল্ড হার্টজ 준영

2
এফওয়াইআই, %Nম্যাকোস 10.13.1 (উচ্চ সিয়েরা) -এর জন্য ম্যান পৃষ্ঠাটি নথিভুক্ত নয় এবং কাজ করে না। নমুনা আউটপুট আমি পেয়েছিলাম হল: 1523342391.N
নিশান্থস


7

প্রথমত, ইউনিক্সের 'যুগ' বা শূন্য সময়টি 1970-01-01 00: 00: 00Z (যার অর্থ জুলু বা জিএমটি বা ইউটিসি সময় অঞ্চলে 1 ই জানুয়ারীর মধ্যরাত)। একটি ইউনিক্স টাইম স্ট্যাম্প সেই সময় থেকে সেকেন্ডের সংখ্যা - লিপ সেকেন্ডের জন্য অ্যাকাউন্টিং নয়।

পারলে বর্তমান সময় উত্পন্ন করা বরং সহজ:

perl -e 'print time, "\n"'

প্রদত্ত তারিখ / সময় মানের সাথে সম্পর্কিত সময় উত্পন্ন করা বরং কম সহজ। যৌক্তিকভাবে, আপনি strptime()পসিক্স থেকে ফাংশনটি ব্যবহার করেন । তবে পার্ল পসিক্স :: স্ট্রপটাইম মডিউল (যা পসিক্স মডিউল থেকে পৃথক) এর স্বাক্ষর রয়েছে:

($sec, $min, $hour, $mday, $mon, $year, $wday, $yday) = 
                                     POSIX::strptime("string", "Format");

mktimePOSIX মডিউলে ফাংশনের স্বাক্ষর রয়েছে:

mktime(sec, min, hour, mday, mon, year, wday = 0, yday = 0, isdst = 0)

সুতরাং, আপনি যদি আপনার ডেটার ফর্ম্যাটটি জানেন তবে আপনি এতে বৈকল্পিক লিখতে পারেন:

perl -MPOSIX -MPOSIX::strptime -e \
    'print mktime(POSIX::strptime("2009-07-30 04:30", "%Y-%m-%d %H:%M")), "\n"'

4

সম্পূর্ণতার জন্য, পিএইচপি:

php -r 'echo time();'

বেসে:

clitime=$(php -r 'echo time();')
echo $clitime

1
বাশের জন্য আমাদের ইতিমধ্যে dateকমান্ড রয়েছে, তাই আমি সেখান থেকে পিএইচপি কল করা প্রয়োজন বলে মনে করি না।
ফেডরকিই 'এসও ক্ষতিগ্রস্থ হওয়া বন্ধ করুন'

3

মধ্যে Haskell,

import Data.Time.Clock.POSIX

main :: IO ()
main = print . floor =<< getPOSIXTime

মধ্যে যান

import "time"
t := time.Unix()

মধ্যে সি

time(); // in time.h POSIX

// for Windows time.h
#define UNIXTIME(result)   time_t localtime; time(&localtime); struct tm* utctime = gmtime(&localtime); result = mktime(utctime);

মধ্যে সুইফট

NSDate().timeIntervalSince1970 // or Date().timeIntervalSince1970

2

হাস্কেলে ...

এটি আবার পসিক্স টাইম হিসাবে ফিরে পেতে:

import Data.Time.Clock.POSIX
getPOSIXTime

পূর্ণসংখ্যা হিসাবে:

import Data.Time.Clock.POSIX
round `fmap` getPOSIXTime

2
public static Int32 GetTimeStamp()
    {
        try
        {
            Int32 unixTimeStamp;
            DateTime currentTime = DateTime.Now;
            DateTime zuluTime = currentTime.ToUniversalTime();
            DateTime unixEpoch = new DateTime(1970, 1, 1);
            unixTimeStamp = (Int32)(zuluTime.Subtract(unixEpoch)).TotalSeconds;
            return unixTimeStamp;
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex);
            return 0;
        }
    }

2

আসুন জাভাস্ক্রিপ্ট চেষ্টা করুন :

var t = Math.floor((new Date().getTime()) / 1000);

... বা এমনকি ভাল, স্থির পদ্ধতির:

var t = Math.floor(Date.now() / 1000);

উভয় ক্ষেত্রেই আমি 1000কয়েক সেকেন্ড থেকে মিলিসে বিভক্ত হয়েছি এবং Math.floorকেবলমাত্র পাস হওয়া পুরো সেকেন্ডগুলিকে উপস্থাপন করতে ব্যবহার করি (বনাম গোলাকার, যা এখনও পাস হয়নি এমন পুরো দ্বিতীয় পর্যন্ত হতে পারে)।


এটা ভুল. উভয় পদ্ধতিই millisecondsসেকেন্ড নয় এবং ইউনিক্স টাইমস্ট্যাম্পটি seconds1 জানুয়ারী, 1970 00:00 ইউটিসি থেকে যে সংখ্যাটি পেরিয়ে গেছে is আপনি জেএস ব্যবহার করতে পারেন, কেবল 1000 এবং রাউন্ড দ্বারা বিভক্ত:Math.round(Date.now()/1000)
লুকাশ লিসিস

1
@ লুকাসলিজিস অবশ্যই সেদিন প্রি-কফি ছিলেন, আমি আমার উত্তরটি আপডেট করেছি যদিও আমি Math.floorতার পরিবর্তে বিকল্পটি বেছে নিয়েছি Math.round। চিয়ার্স
ম্যাডব্রেক্স

0

যদি আপনার শেল স্ক্রিপ্টের (ইউনিয়ন টাইমস্ট্যাম্পের প্রয়োজন হয়) (বর্ন পরিবার: sh, ksh, বাশ, zsh, ...), এটি অন্যান্য ইউনিক্স মেশিনে অন্যান্য পরামর্শ (পারল, হাস্কেল, রুবি, পাইথন, জিএনইউ তারিখ) এর মতো কাজ করা উচিত ), এটি একটি পসিএক্স স্ট্যান্ডার্ড কমান্ড এবং বৈশিষ্ট্যের উপর ভিত্তি করে।

PATH=`getconf PATH` awk 'BEGIN {srand();print srand()}'

0

5 বাশে একটি নতুন পরিবর্তনশীল রয়েছে:

echo $EPOCHSECONDS

অথবা আপনি যদি উচ্চতর নির্ভুলতা চান (মাইক্রোসেকেন্ডে):

echo $EPOCHREALTIME

0

আমি ডেট কমান্ড ব্যবহার করে utc তারিখের সময় মুদ্রণ করতে চাইলে আমাকে ডেট কমান্ড সহ -u আর্গুমেন্ট ব্যবহার করতে হবে।

উদাহরণ

date -u

আউটপুট

Fri Jun 14 09:00:42 UTC 2019

0

nawk:

$ nawk 'BEGIN{print srand()}'
  • এমনকি সোলারিসের পুরানো সংস্করণ এবং সম্ভবত অন্যান্য ইউনিক্স সিস্টেমগুলিতেও কাজ করে, যেখানে '' 'তারিখ +% s' '' প্রয়োগ করা হয়নি
  • লিনাক্স এবং অন্যান্য ডিস্ট্রোজে কাজ করে না যেখানে পিক্সিক্স সরঞ্জামগুলি জিএনইউ সংস্করণ (নাক -> গোক ইত্যাদি) দিয়ে প্রতিস্থাপন করা হয়েছে)
  • বেশ উদ্বেগযুক্ত কিন্তু নির্ধারণী মজাদার :-)

-1

নোডজেএস দিয়ে, কেবল একটি টার্মিনাল খুলুন এবং টাইপ করুন:
node -e "console.log(new Date().getTime())"বাnode -e "console.log(Date.now())"

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.