2010-09-15 21 views
8

मैं कुछ दिख रहा था, लेकिन फ्लैश/एएस 3 में मूल तिथि स्वरूपण कार्यक्षमता गायब प्रतीत होती है। मैं Date से स्वरूपित स्ट्रिंग कैसे प्राप्त करूं? .toLocaleDateString() और .toUTCString() जैसे कुछ विकल्प हैं, लेकिन कम से कम कहने के लिए यह थोड़ा सीमित है।मैं फ्लैश में दिनांक कैसे प्रारूपित करूं?

तो, मैं AS3 में Date ऑब्जेक्ट को कैसे प्रारूपित करूं?

+0

क्या आप एक उदाहरण दे सकते हैं कि आप दिनांक स्वरूपित कैसे करना चाहते हैं? – JeremyFromEarth

+0

हां, हालांकि मुझे वास्तव में यह महत्वपूर्ण नहीं लगता है, क्योंकि एक सभ्य डेटफॉर्मर कस्टम प्रारूप के सभी प्रकारों को संभालने में सक्षम होना चाहिए। मैं वर्तमान में इस तरह प्रारूपित दिनांक चाहता हूं: '2010-09-16T07: 28: 14 + 00: 00' >> ' 2010.1609.0728' – Sietse

उत्तर

27

फ़्लैश प्लेयर 10.1 फ़्लैश.ग्लोलाइजेशन पैकेज के हिस्से के रूप में डेटटाइमफॉर्मेटर जोड़ा गया। यह लचीला है लेकिन अच्छी तरह से प्रलेखित नहीं है।

import flash.globalization.DateTimeFormatter; 

var d:Date = new Date(); 
var dtf:DateTimeFormatter = new DateTimeFormatter("en-US"); 
dtf.setDateTimePattern("yyyy-MM-dd 'at' hh:mm:ssa"); 
trace(dtf.format(d)); 

// 2012-06-06 at 09:58:46PM 
+0

बहुत मदद की! – Narek

+1

आप डेटटाइमफॉर्मेटर कन्स्ट्रक्टर पर पहले तर्क के लिए केवल एक आसान स्थिरता में फेंक सकते हैं: 'नया डेटटाइमफॉर्मेटर (लोकेलआईडी.डेफाल्ट);' –

+3

24-घंटे प्रारूप: 'dtf.setDateTimePattern (" yyyy-MM-dd ' 'एचएच: एमएम: एसएस ");' – Bitterblue

2

यहाँ एक कस्टम प्रारूप का एक सरल उदाहरण है:

public static function getDateIso8601Long(date:Date):String { 
     var str:String = date.getFullYear().toString() 
     str = str +"-"+ ((String((date.getMonth()+1)).length == 1)?"0"+(date.getMonth()+1):(date.getMonth()+1)).toString() 
     str = str +"-"+ ((date.getDate().toString().length == 1)?"0"+date.getDate():date.getDate()).toString() 
     str = str +"T"+ ((date.getHours().toString().length == 1)?"0"+date.getHours():date.getHours()).toString() 
     str = str +":"+ ((date.getMinutes().toString().length == 1)?"0"+date.getMinutes():date.getMinutes()).toString() 
     str = str +":"+ ((date.getSeconds().toString().length == 1)?"0"+date.getSeconds():date.getSeconds()).toString() 
     var ms:String = date.getMilliseconds().toString() 
     while (ms.length < 3) 
      ms = "0"+ms 
     str = str+"."+ms 
     var offsetMinute:Number = date.getTimezoneOffset() 
     var direction:Number = (offsetMinute<0)?1:-1 
     var offsetHour:Number = Math.floor(offsetMinute/60) 
     offsetMinute = offsetMinute-(offsetHour*60) 

     var offsetHourStr:String = offsetHour.toString() 
     while (offsetHourStr.length < 2) 
      offsetHourStr = "0"+offsetHourStr 
     var offsetMinuteStr:String = offsetMinute.toString() 
     while (offsetMinuteStr.length < 2) 
      offsetMinuteStr = "0"+offsetMinuteStr 
     str = str+((direction == -1)?"-":"+")+offsetHourStr+":"+offsetMinuteStr 
     return str 
    } 
+3

मैं थोड़ी उम्मीद कर रहा था कि मुझे अपना पहिया खोजना न पड़े। – Sietse

+0

शायद बड़े ढांचे/पुस्तकालयों (as3coreLib, स्प्रिंग एक्शनस्क्रिप्ट 1) में उपलब्ध विभिन्न उपयोग वर्ग देखें। मैं निश्चित नहीं हूं कि आप क्या करना चाहते हैं। क्या आपको केवल फॉर्मेटर या कैलकुलेटर चाहिए? एक साधारण Google खोज ने मुझे दिनांक गणना के लिए कई एक्शनस्क्रिप्ट 3 उपयोगिता कक्षाएं लौटा दीं। साथ ही, जावा डेट यूटिलिटी क्लास को एएस 3 में कनवर्ट करना तुच्छ होगा। http://github.com/mikechambers/as3corelib/blob/master/src/com/adobe/utils/DateUtil.as –

1

दुर्भाग्य से मुझे नहीं लगता कि आप देशी समर्थन के मामले में कुछ भी अनदेखा कर रहे हैं। this project है जो थोड़ा अधिक लचीलापन प्रदान करता है, हालांकि मुझे कभी भी किसी भी गहराई में इसके साथ काम करने के लिए गोल नहीं मिला है, इसलिए मैं इसके लिए झुका नहीं सकता। जिस परियोजना में मैं वर्तमान में काम कर रहा हूं, उसके परिणामस्वरूप 500 लाइन (और गिनती) तिथि के रूप में कक्षा है ..

1

mx.formatters.DateFormatter कक्षा (http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/formatters/DateFormatter.html देखें) है। कस्टम स्वरूपण के लिए इसमें formatString संपत्ति है। फिर आप format पर कॉल कर सकते हैं, एक स्ट्रिंग प्राप्त करने की तारीख की आपूर्ति कर सकते हैं।

+1

यह ध्यान देने योग्य है कि डेटफॉर्मेटर फ्लेक्स ढांचे का हिस्सा है और वेनिला फ्लैश प्रोजेक्ट तक उपलब्ध नहीं है आप उचित फ्लेक्स पुस्तकालयों को शामिल करते हैं। – marcelebrate

0
private static function getTime():String 
{ 
    const d = '.'; 
    const e = ''; 
    const s = ':'; 

    var date:Date = new Date(); 
    return e.concat(pad(date.hours, 2), s, 
        pad(date.minutes, 2), s, 
        pad(date.seconds, 2), d, 
        pad(date.milliseconds, 3)); 

    function pad(value:String, length:int):String 
    { 
     const zero = '0'; 
     var result:String = value; 
     while (result.length < length) 
     { 
      result = zero.concat(result); 
     } 
     return result; 
    } 
} 
संबंधित मुद्दे