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


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.