2012-03-12 14 views
8

सारांशGoogle चार्ट: तिथि() का उपयोग किए बिना गुजरने की तिथियां?

मैं एक्स अक्ष के रूप में तारीखों के साथ गूगल चार्ट में एक पंक्ति ग्राफ बनाने के लिए कोशिश कर रहा हूँ। मेरे पास यह सब कुछ है लेकिन इसे Date ऑब्जेक्ट्स के रूप में गुजरने की तारीखों की आवश्यकता है, यानी new Date(2005, 3, 13)। क्या कोई तरीका है कि मैं इसे यूनिक्स टाइमस्टैम्प या शायद एक स्ट्रिंग के रूप में पास कर सकता हूं?

अधिक जानकारी

तो मैं PHP में डेटा है कि मैं ग्राफ़ चाहते हैं का एक समूह है। मैं डेटा ले रहा हूँ और प्रारूप में एक सरणी है कि सही JSON प्रारूप जब json_encode() के माध्यम से चलाने का उत्पादन करेगा में यह व्यवस्था, the Google data docs प्रति:

$graph_data = array(
    'cols' => array(
     array(
      'id' => 'date', 
      'label' => 'Date', 
      'type' => 'datetime', 
     ), 
     array(
      'id' => 'odometer', 
      'label' => 'Miles', 
      'type' => 'number', 
     ), 
    ), 
    'rows' => array(
     array(
      'c' => array(
       array('v' => 1331479502), 
       array('v' => 56872), 
      ), 
     ), 
     array(
      'c' => array(
       array('v' => 1331375984), 
       array('v' => 55324), 
      ), 
     ), 
     array(
      'c' => array(
       array('v' => 1328966460), 
       array('v' => 54244), 
      ), 
     ), 
    ), 
); 

{"cols":[{"id":"date","label":"Date","type":"datetime"},{"id":"odometer","label":"Miles","type":"number"}],"rows":[{"c":[{"v":1331479502},{"v":56872}]},{"c":[{"v":1331375984},{"v":55324}]},{"c":[{"v":1328966460},{"v":54244}]}]}

तो मैं JSON निर्माण नीचे है, लेकिन एपीआई चाहता है कि Date ऑब्जेक्ट के रूप में पास की गई तारीखें और संख्या (या स्ट्रिंग) न हो। यह अभी एक त्रुटि फेंकता है लेकिन अगर मैं इसे datetime से number में बदलता हूं, तो यह पूरी तरह से ग्राफ करता है, इसलिए मुझे पता है कि मेरा JSON प्रारूप सही है।

क्या एपीआई एनीक्स टाइमस्टैम्प स्वीकार करने के लिए कुछ भी कर सकता है, या शायद किसी प्रकार की स्ट्रिंग?

जैसा कि मैंने इसे टाइप किया है, मुझे एहसास हुआ कि शायद मैं JSON ऑब्जेक्ट पर चलने के लिए कुछ जावास्क्रिप्ट का उपयोग कर सकता हूं और Date ऑब्जेक्ट्स के साथ टाइमस्टैम्प को प्रतिस्थापित कर सकता हूं, लेकिन यह अच्छा होगा अगर मुझे कोई डेटा मैनिपुलेशन नहीं करना पड़े जावास्क्रिप्ट।

संपादित

मैं number को type स्थापित करने और इस तरह की दिनांक पारित करके वहाँ जिस तरह का हिस्सा हो गया है:

 array(
      'c' => array(
       array('v' => 1331479502, 'f' => 'March 11th, 2012'), 
       array('v' => 56872), 
      ), 
     ), 

बनाता है यही कारण है कि f मूल्य (टूलटिप में दिखाने आहा!) लेकिन v मान धुरी लेबल के लिए अभी भी उपयोग किया जाता है। हम्म।

संपादित करें # 2

ऐसा लगता है कि DataView का उपयोग कर एक तिथि में एक number टाइमस्टैम्प को बदलने के लिए में कुछ संभावित हो सकता है लेकिन मैं इसे अभी तक पता लगा नहीं किया है।

उत्तर

8

मैं बस JSON सरणी चल रहा था और टाइमस्टैम्प को Date ऑब्जेक्ट्स के साथ बदल दिया। यह अपेक्षाकृत आसान था कि यह होना चाहिए:

for (var i = 0; i < json.rows.length; i++) { 
    json.rows[i].c[0].v = new Date(json.rows[i].c[0].v * 1000); 
} 
+0

आपने यह लूप कहाँ किया था? धन्यवाद! – Moozy

+1

@Moozy: डेटा को प्री-प्रोसेस करने के लिए जावास्क्रिप्ट के भीतर। आप http://www.viper007bond.com/about/my-cars/ के स्रोत में डेमो देख सकते हैं। मैंने इसे यहां बैकअप के रूप में भी प्रतिबिंबित किया है, मेरी साइट ने कभी भी भविष्य में बदलाव किया है: http://pastebin.com/xsQm8qZT – Viper007Bond

0

एक्स-अक्ष पर प्रदर्शित होने पर दिनांक दिनांक के बजाय स्ट्रिंग का उपयोग किया गया। यह मुझे एक स्ट्रिंग के रूप में स्वरूपित करके सर्वर पक्ष पर डेटटाइम डिस्प्ले को कस्टमाइज़ करने की अनुमति देता है और कुछ स्ट्रिंग या जावास्क्रिप्ट में संख्यात्मक मानों से डेट ऑब्जेक्ट बनाने जैसी युक्तियों की कोई आवश्यकता नहीं है।

+4

धन्यवाद लेकिन 'स्ट्रिंग' का उपयोग करने वाला मुद्दा यह है कि [discrete] (http://code.google.com/apis/chart/interactive/ डॉक्स/customizing_axes.html # Discrete_vs_Continuous) निरंतर धुरी के बजाय धुरी, यानि डेटा मान वास्तविक मूल्य के आधार पर फैलाने के बजाए समान रूप से दूरी पर हैं। – Viper007Bond

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