2010-05-23 20 views
17

मैं वर्तमान दिनांक और समय जानना चाहता हूं।जावा - सिस्टम तिथि से स्वतंत्र तिथि कैसे प्राप्त करें?

कोड

Calendar.getInstance(); 

प्रणाली कार्यक्रम चल रहा है और प्रणाली की तारीख गलत हो सकता है, जिस पर की एक तारीख और समय का प्रतिनिधित्व करता है।

तो क्या कोई तरीका है जिसके द्वारा मैं सिस्टम की तारीख और समय के बावजूद सही वर्तमान दिनांक और समय प्राप्त कर सकता हूं, जिस पर प्रोग्राम चल रहा है?

+2

दिनांक एक सापेक्ष बात है ... "सही वर्तमान तिथि" जैसी कोई चीज़ नहीं है, जब तक कि आप एक विशिष्ट समय क्षेत्र का जिक्र नहीं कर रहे हों। –

+0

ठीक है .. मैं किसी विशेष टाइमज़ोन की सही तिथि और समय कैसे प्राप्त कर सकता हूं? –

+0

आपको अपने वर्तमान सिस्टम की तिथि और समय से शुरुआत करना है - क्या यह ठीक है? – Mark

उत्तर

4

यदि आप इंटरनेट पर हैं, तो आप एक ज्ञात और भरोसेमंद समय स्रोत पूछने में सक्षम हो सकते हैं। यदि आपका प्रोग्राम चलाने वाला व्यक्ति आपके प्रोग्राम को ऐसा करने से रोकना चाहता है (जैसे कि आपने उन्हें समय सीमित लाइसेंस दिया है और वे अधिक समय के लिए भुगतान नहीं करना चाहते हैं), तो वे उस कनेक्शन को धोखा दे सकते हैं या ब्लॉक कर सकते हैं।

एक परियोजना पर मैं चालू था, हमने हार्डवेयर में एक सुरक्षित, भरोसेमंद समय स्रोत रखा जो कि छेड़छाड़ नहीं किया जा सका। यह एन्क्रिप्शन और लाइसेंसिंग के लिए डिज़ाइन किया गया था, और इसका उपयोग करने के लिए जावा लाइब्रेरी थी। क्षमा करें, मुझे डिवाइस का नाम याद नहीं है।

तो उत्तर शायद हां, शायद नहीं।

0

प्रोग्रामिंग स्तर विधियां आपके सिस्टम से दिनांक और समय प्राप्त करने के लिए विकसित की गई हैं। निर्दिष्ट सिस्टम के अलावा तारीखों को प्राप्त करने के लिए आप उन्हें संशोधित नहीं कर सकते हैं।

आपकी अतिरिक्त आवश्यकता के लिए, यदि आप वास्तव में यह चाहते हैं, तो आपको अपनी क्लाइंट मशीन और सर्वर के बीच सिंक्रनाइज़ेशन की आवश्यकता होगी।

3

क्या आपके सिस्टम में इंटरनेट का उपयोग है? यदि ऐसा है, तो आप सटीक समय सेवाओं के साथ सिंक्रनाइज़ेशन का उपयोग कर सकते हैं (उदाहरण के लिए: http://tldp.org/HOWTO/TimePrecision-HOWTO/ntp.html) और जो आप चाहते हैं उसे अनुदान दें।

7

मैं पूरी तरह से अपने प्रश्न समझ में नहीं आता, लेकिन मैं अपने शीर्षक जवाब कर सकते हैं:

GregorianCalendar gc = new GregorianCalendar(System.getCurrentTimeMillis()); 
int year = gc.get(Calendar.YEAR); 
39

जावा के संस्करण 1.1 से पहले यह Date वर्ग का उपयोग करने के मानक था:

Date now = new Date();  // Gets the current date and time 
int year = now.getYear(); // Returns the # of years since 1900 

हालांकि , जावा के नए संस्करणों में, Date वर्ग में से अधिकांश को बहिष्कृत कर दिया गया है (विशेष रूप से getYear विधि)।

Calendar now = Calendar.getInstance(); // Gets the current date and time 
int year = now.get(Calendar.YEAR);  // The current year 
+4

वाह, 2 9 अपवॉट्स और यह सवाल का जवाब नहीं देता है, जो विशेष रूप से पूछता है कि सिस्टम घड़ी गलत होने पर वास्तविक तिथि कैसे प्राप्त करें। –

+0

@ पॉल टॉम्बलिन इस प्रश्न का मूल शीर्षक "जावा - वर्तमान वर्ष कैसे प्राप्त करें?" जो वास्तविक प्रश्न से मेल नहीं खाता है। संशोधित है कि। – ltlBeBoy

+0

@ltlBeBoy मुझे लगता है कि शीर्षक उत्तरदाताओं और अपवित्रों को शीर्षक से अधिक पढ़ने के लिए यह बहुत अधिक है। –

0

यहाँ अपनी पसंद का एक वेब सर्वर से HTTP प्रारूप (आमतौर पर यूटीसी समय क्षेत्र) में तारीख को लाने के लिए कुछ कोड है: यह Calendar वर्ग का उपयोग करने के अब और अधिक मानक है।

बेशक, यदि आपके पास भौतिक हार्डवेयर और ओएस पर कोई नियंत्रण नहीं है, तो कुछ भी गारंटी नहीं दे सकता कि आप वास्तविक वेब सर्वर से बात करने में सक्षम होंगे ... लेकिन वैसे भी।

package some.package; 

import java.io.IOException; 
import java.net.URL; 
import java.net.URLConnection; 
import java.util.List; 
import java.util.Map; 

public class Test { 

    private static String getServerHttpDate(String serverUrl) throws IOException { 
    URL url = new URL(serverUrl); 
    URLConnection connection = url.openConnection(); 

    Map<String, List<String>> httpHeaders = connection.getHeaderFields(); 

    for (Map.Entry<String, List<String>> entry : httpHeaders.entrySet()) { 
     String headerName = entry.getKey(); 
     if (headerName != null && headerName.equalsIgnoreCase("date")) { 
     return entry.getValue().get(0); 
     } 
    } 
    return null; 
    } 

    public static void main(String[] args) throws IOException { 
    String serverUrl = args.length > 0 ? args[0] : "https://google.com"; 
    System.out.println(getServerHttpDate(serverUrl)); 
    } 

} 
संबंधित मुद्दे