तारीख से यूनिक्स टाइमस्टैम्प प्राप्त करना ()


85

मैं एक यूनिक्स टाइमस्टैम्प को कंस्ट्रक्टर में मान Date()डालकर ऑब्जेक्ट में बदल सकता हूं । उदाहरण के लिए: मैं यह कर सकता था ।longDate()new Date(1318762128031)

लेकिन उसके बाद, मैं Date()ऑब्जेक्ट से यूनिक्स टाइमस्टैम्प कैसे वापस पा सकता हूं ?


आप अभी भी अपने दिनांक वस्तु का लंबा मूल्य प्राप्त कर सकते हैं, क्या आप यू नहीं कर सकते?
केंट

@ xEnOn: आप लंबे कंस्ट्रक्टर का उपयोग करके यूनिक्स टाइमस्टैम्प को डेट में परिवर्तित नहीं कर रहे हैं। एक यूनिक्स टाइमस्टैम्प, जैसा कि मैंने जैकबबिट के उत्तर पर टिप्पणी की है, सेकंड में व्यक्त किया जाता है, मिलीसेकंड में नहीं। यहाँ: en.wikipedia.org/wiki/Unix_time और यहाँ: unixtimestamp.com/index.php सेकंड्स। मिलीसेकंड नहीं।
टैक्टिकलकोडर

जवाबों:


93

getTime()1 जनवरी, 1970 के बाद से मिलीसेकंड प्राप्त करता है, GMT कंस्ट्रक्टर के पास गया। इससे यूनिक्स समय (समान, लेकिन सेकंड में) प्राप्त करना बहुत कठिन नहीं होना चाहिए ।


1
धन्यवाद। मैं इसे स्टैटिक फंक्शन Date.getTime (नई तारीख ()) के रूप में गलत तरीके से याद करता रहा, जो काम नहीं करता था और सोचा था कि क्या चल रहा है।
कारवां

47
@jackrabbit: वास्तव में getTime () यूनिक्स टाइमस्टैम्प को वापस नहीं देता है लेकिन "यूनिक्स टाइमस्टैम्प * 1000"। यूनिक्स टाइमस्टैम्प के बारे में सहमत होना यह है कि यह दूसरे में युग के बाद से कई बार देता है, मिलीसेकंड में नहीं; )
टैक्टिकलकोडर

3
@ टैक्टिकलकोडर जैकबबिट अधिक सटीक है: यह मिलीसेकंड में यूनिक्स-टाइमस्टैम्प लौटाता है। हां, यूनिक्स-टाइमस्टैम्प सेकंड में होने के लिए सहमत है - लेकिन अगर आपका जवाब सही होगा, ( getTime() = unixTimestamp * 1000), getTime()तो हमेशा तीन शून्य वापस आ जाएंगे, लेकिन वास्तव में कुछ भी समाप्त होने से वापस आ सकता 000है 999, जिसका अर्थ है कि यह अधिक है मिलीसेकंड के कारण सटीकता और सिर्फ "* 1000" नहीं है। अर्थ: getTime()परिणाम के साथ एक वास्तविक unixTimestamp * 1000 की तुलना करना केवल ~ 0.1% मामलों में सफल होगा।
dognose

रिकॉर्ड के लिए, फ़ंक्शन GMT-0 क्षेत्र (ग्रीनविच में) में मिलिसेकंड देता है, इसलिए आप इसे विभिन्न क्षेत्रों में परिवर्तित करने के बारे में सुरक्षित हो सकते हैं।
ओनट कोरुचु

50

एक प्राप्त करने के लिए timestampसे Date(), आप को विभाजित करने की आवश्यकता होगी getTime()द्वारा 1000, अर्थात्:

Date currentDate = new Date();
currentDate.getTime() / 1000;
// 1397132691

या केवल:

long unixTime = System.currentTimeMillis() / 1000L;

1
या इससे भी अधिक:new Date().getTime()
मार्कहु

25
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.TimeZone;

public class Timeconversion {
    private DateFormat dateFormat = new SimpleDateFormat("yyyyMMddHHmm", Locale.ENGLISH); //Specify your locale

    public long timeConversion(String time) {
        long unixTime = 0;
        dateFormat.setTimeZone(TimeZone.getTimeZone("GMT+5:30")); //Specify your timezone
        try {
            unixTime = dateFormat.parse(time).getTime();
            unixTime = unixTime / 1000;
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return unixTime;
    }
}

6

जावा 8 में, getEpochSecondटाइमस्टैम्प प्राप्त करने के लिए नई तारीख का उपयोग करने की विधि और विधि का उपयोग करना सुविधाजनक है (यह दूसरे में है)

Instant.now().getEpochSecond();


लेकिन कोड ने इस पल के लिए # सेकंड का रिटर्न पेश किया
मिलान वेलेबिट

सच, @MilanVelebit Instantइसके बदले आपको अपना वांछित स्थानापन्न करना होगा Instant.now()। या yourDesiredJavaUtilDate.toInstant()अगर आपको Dateविरासत एपीआई से एक पुराने जमाने मिला ।
ओले वीवी

0

मुझे नहीं पता कि क्या आप js या java में प्राप्त करना चाहते हैं, js में यूनिक्स टाइमस्टैम्प्ट प्राप्त करने का सबसे सरल तरीका (यह 1/1/1970 से सेकंड में समय है) यह इस प्रकार है:

var myDate = new Date();
console.log(+myDate); // +myDateObject give you the unix from that date

-1

SimpleDateFormatकक्षा का उपयोग करें । इसके javadoc पर एक नज़र डालें: यह बताता है कि प्रारूप स्विच का उपयोग कैसे करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.