Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将PST格式的日期和时间转换为UTC格式_Java_Javascript_Apache Flex_Actionscript_Utc - Fatal编程技术网

Java 将PST格式的日期和时间转换为UTC格式

Java 将PST格式的日期和时间转换为UTC格式,java,javascript,apache-flex,actionscript,utc,Java,Javascript,Apache Flex,Actionscript,Utc,我有一个变量str(字符串类型),其值为“2013年11月28日09:15 am”。如何将其转换为UTC格式(str变量中的上述时间为PST,因此UTC应比该时间多8小时)。我使用的是flex 2。以下代码不起作用:- txtDate.text= formatDateUTC(txtDate.text); //here txtDate.text=28-Nov-2013 09:15 AM private function formatDateUTC(originalDate:String

我有一个变量str(字符串类型),其值为“2013年11月28日09:15 am”。如何将其转换为UTC格式(str变量中的上述时间为PST,因此UTC应比该时间多8小时)。我使用的是flex 2。以下代码不起作用:-

 txtDate.text= formatDateUTC(txtDate.text); //here txtDate.text=28-Nov-2013 09:15 AM

    private function formatDateUTC(originalDate:String):String
    {
        Alert.show('original '+originalDate);
        var dtValue:Date = new Date(Date.parse(originalDate.replace("-"," ")));
        var editedDate:String=pstFormatter.format(dtValue);
        Alert.show('edited '+editedDate);


        return (dateFormatter.format(dateAdd("hours",8,dtValue))).toString();

    }
    private function dateAdd(datepart:String = "", number:Number = 0, date:Date = null):Date
            {
        if (date == null) {
            date = new Date();
        }

        var returnDate:Date = new Date(date);;

        switch (datepart.toLowerCase()) {
            case "fullyear":
            case "month":
            case "date":
            case "hours":
            case "minutes":
            case "seconds":
            case "milliseconds":
                returnDate[datepart] += number;
                break;
            default:
                /* Unknown date part, do nothing. */
                break;
        }
       return returnDate;
    }

聪明的程序员把繁重的日期-时间计算留给专门的库。在Java中,这就是(或者在Java8中,JSR310)

下面是Java7中JodaTime2.3的示例代码

/©2013巴西尔布尔克。此源代码可以由任何对此承担全部责任的人自由使用。
String dateString=“2013年11月28日上午9:15”;//假设为美国西海岸的当地日期时间。
//String dateString=“2013年11月28日09:15下午”//如果您愿意,可以测试“PM”和“AM”。
//Joda Time不赞成使用3个字母的时区代码,因为它们不一致。为区域使用其他标识符。
//时区列表:http://joda-time.sourceforge.net/timezones.html
org.joda.time.DateTimeZone californiaTimeZone=org.joda.time.DateTimeZone.forID(“美国/洛杉矶”);
//Joda时间格式代码:http://www.joda.org/joda-time/key_format.html
org.joda.time.format.DateTimeFormatter dateStringFormat=org.joda.time.format.DateTimeFormat.forPattern(“dd-MMM-yyyy-hh:mm-aa”)。withZone(加州时区);
org.joda.time.DateTime californidatetime=dateStringFormat.parseDateTime(dateString);
org.joda.time.DateTime-utcDateTime=californiaDateTime.toDateTime(org.joda.time.DateTimeZone.UTC);
//这两个日期时间对象代表宇宙时间线中的同一时刻,
//但呈现不同的时区偏移。
System.out.println(“californiaDateTime:+californiaDateTime”);
System.out.println(“utcDateTime:+utcDateTime”);
当运行时

加州时间:2013-11-28 09:15:00.000-08:00 联合技术开发署发布时间:2013-11-28T17:15:00.000Z
谢谢Basil,如果dateString=“28-Nov-2013 09:15 AM”运行良好,但如果dateString=“28-Nov-2013 09:15 PM”,则给出“2013-11-28T17:15:00.000Z”,其中预期答案为“2013-11-29T05:15:00.000Z”,即日期不是changing@user3005581您在我的格式化程序模式模板中发现了一个错误。我在时间中使用大写字母“HH”,意思是“解释为24小时时钟”。我在另一个问题中发现了这个诊断。我现在将修复我的示例代码。