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


86

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

System.currentTimeMillis()

উত্তর:


118

মরিচা 1.8, যেহেতু আপনার ক্রেট ব্যবহার করার দরকার নেই। পরিবর্তে, আপনি SystemTimeএবং ব্যবহার করতে পারেন UNIX_EPOCH:

use std::time::{SystemTime, UNIX_EPOCH};

fn main() {
    let start = SystemTime::now();
    let since_the_epoch = start
        .duration_since(UNIX_EPOCH)
        .expect("Time went backwards");
    println!("{:?}", since_the_epoch);
}

আপনার যদি ঠিক মিলি সেকেন্ডের প্রয়োজন হয় তবে আপনি এটি রূপান্তর করতে পারেন Duration

মরিচা 1.33

let in_ms = since_the_epoch.as_millis();

মরিচা 1.27

let in_ms = since_the_epoch.as_secs() as u128 * 1000 + 
            since_the_epoch.subsec_millis() as u128;

মরিচা 1.8

let in_ms = since_the_epoch.as_secs() * 1000 +
            since_the_epoch.subsec_nanos() as u64 / 1_000_000;

তাত্ক্ষণিকের চেয়ে সিস্টেমটাইম কেন?
অ্যান্ডি হেডেন

4
@ অ্যান্ডহেডেন আপনি ডকুমেন্টেশনগুলির জন্যInstant পুনরায় পড়তে ইচ্ছুক হতে পারেন : তাত্ক্ষণিকভাবে "সেকেন্ডের সংখ্যা" পাওয়ার কোনও পদ্ধতি নেই। পরিবর্তে, এটি কেবলমাত্র দুটি তাত্ক্ষণিকের (বা দুটি তাত্ক্ষণিকের তুলনা) মধ্যে সময়কাল পরিমাপের অনুমতি দেয়।
শেপমাস্টার

36

আপনি যদি মিলিসেকেন্ডগুলির সাথে সাধারণ সময়গুলি করতে চান তবে আপনি এটি ব্যবহার করতে পারেন std::time::Instant:

use std::time::Instant;

fn main() {
    let start = Instant::now();

    // do stuff

    let elapsed = start.elapsed();

    // Debug format
    println!("Debug: {:?}", elapsed); 

    // Format as milliseconds rounded down
    // Since Rust 1.33:
    println!("Millis: {} ms", elapsed.as_millis());

    // Before Rust 1.33:
    println!("Millis: {} ms",
             (elapsed.as_secs() * 1_000) + (elapsed.subsec_nanos() / 1_000_000) as u64);
}

আউটপুট:

Debug: 10.93993ms
Millis: 10 ms
Millis: 10 ms

যোগ করার জন্য আরআরএফসি ইস্যু 1545 দেখুন । as_millisDuration
রবিনস্ট

আপনি যদি সময়কাল চান তবে আপনি ডক্টর.আরস্ট-lang.org/1.8.0/std/time/… চেকআউট করতে চাইতে পারেন।
ভিনিল

কারণ u128 is not supported
পেড্রো পাওলো

17

আপনি সময় ক্রেট ব্যবহার করতে পারেন :

extern crate time;

fn main() {
    println!("{}", time::now());
}

এটি এমন এক প্রত্যাবর্তন করে Tmযা আপনি যা চান নির্ভুলতা পেতে পারেন।


4
precise_time_...যে বাক্স থেকে ফাংশন, এছাড়াও প্রাসঙ্গিক যদি এক মাত্র আপেক্ষিক বার পরিমাপ শুভেচ্ছা।
huon

আমি কীভাবে মিলিসেকেন্ড পেতে পারি?
レ ッ ク

4
আপনাকে ব্যবহার করতে হবে time::now_utc()বা time::get_time()যেহেতু জাভা-র সিস্টেম.কন্ট্রেনটাইমমিলিস () ইউটিসি সময় দেয়। আমি লিখবlet timespec = time::get_time(); let mills = timespec.sec + timespec.nsec as i64 / 1000 / 1000;
ন্যান্ডর ক্র্যাকার

4
সময় :: নিখুঁত_কালীন_স () এবং সময় :: যথাযথ_কাল_স ()
tyoc213

4
এই ক্রেটটি এখন অবচয় করা হয়েছে। ব্যবহার করুন chronoপরিবর্তে বাক্স।
ওন্দ্রেজ স্লিনটেক

13

আমি একটি পরিষ্কার সমাধান পেয়েছি chrono মধ্যে coinnect :

use chrono::prelude::*;

pub fn get_unix_timestamp_ms() -> i64 {
    let now = Utc::now();
    now.timestamp_millis()
}

pub fn get_unix_timestamp_us() -> i64 {
    let now = Utc::now();
    now.timestamp_nanos()
}

6
extern crate time;

fn timestamp() -> f64 {
    let timespec = time::get_time();
    // 1459440009.113178
    let mills: f64 = timespec.sec as f64 + (timespec.nsec as f64 / 1000.0 / 1000.0 / 1000.0);
    mills
}

fn main() {
    let ts = timestamp();
    println!("Time Stamp: {:?}", ts);
}

মরিচা খেলার মাঠ


এটি সিস্টেম.কন্ট্রেনটাইমমিলিস () এর সমান মানটি ফেরায় না
জোসেহজ

সত্য, এটি সেকেন্ডের মধ্যে সময় ফিরে আসে। মিলিস পেতে, আপনাকে সেকেন্ডটি 1000 দ্বারা গুণতে হবে এবং এনসিএকে 1000 কম দিয়ে ভাগ করতে হবে (অন্য উত্তরগুলি সঠিকভাবে করবে)।
স্ববিরোধী

@ চুক্তিবদ্ধ play.rust-lang.org/…
জিজুন লুও

4

System.currentTimeMillis() জাভাতে 1 জানুয়ারি, 1970, বর্তমান সময় এবং মধ্যরাতের মধ্যে মিলি সেকেন্ডের পার্থক্যটি প্রদান করে।

মরিচায় আমাদের কাছে রয়েছে time::get_time()যা Timespecবর্তমান সময়ের সাথে সেকেন্ড হিসাবে ফিরে আসে এবং 1 জানুয়ারি, 1970, মধ্যরাত থেকে ন্যানোসেকেন্ডে অফসেট।

উদাহরণ (জং 1.13 ব্যবহার করে):

extern crate time; //Time library

fn main() {
    //Get current time
    let current_time = time::get_time();

    //Print results
    println!("Time in seconds {}\nOffset in nanoseconds {}",
             current_time.sec, 
             current_time.nsec);

    //Calculate milliseconds
    let milliseconds = (current_time.sec as i64 * 1000) + 
                       (current_time.nsec as i64 / 1000 / 1000);

    println!("System.currentTimeMillis(): {}", milliseconds);
}

তথ্যসূত্র: টাইম ক্রেট , সিস্টেম.কালিনটাইমমিলিস ()


ক্রেটের লিঙ্কটি বৈধ নয়।
আইএক্সএক্স

0

@ শেপমাস্টার উল্লিখিত হিসাবে এটি জাং এর জাস্ট এর সমতুল্য System.currentTimeMillis()

use std::time::{SystemTime, UNIX_EPOCH};

fn get_epoch_ms() -> u128 {
    SystemTime::now()
        .duration_since(UNIX_EPOCH)
        .unwrap()
        .as_millis()
}
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.