You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jython中UTC转America/Los_Angeles时区异常问题求助

问题原因

你脚本里target_calendar.getTime()返回的是Java的Date对象,这个对象本质只是一个UTC时间戳,不携带任何时区信息。调用toString()时,它会自动使用系统默认时区(你环境中的IST)来格式化输出,所以看起来返回的是IST时间,但实际上target_calendar已经完成了时区转换,只是输出环节没指定目标时区。

修正方案

方案1:用SimpleDateFormat指定时区格式化

通过SimpleDateFormat设置目标时区,将Date对象格式化为对应时区的字符串:

from java.util import Calendar, TimeZone
from java.text import SimpleDateFormat

def convert_utc_to_timezone(tz):
    utc_calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
    utc_time_in_millis = utc_calendar.getTimeInMillis()
    
    target_calendar = Calendar.getInstance(TimeZone.getTimeZone(tz))
    target_calendar.setTimeInMillis(utc_time_in_millis)
    
    # 指定目标时区格式化时间
    sdf = SimpleDateFormat("yyyy-MM-dd HH:mm:ss z")
    sdf.setTimeZone(target_calendar.getTimeZone())
    return sdf.format(target_calendar.getTime())

tz = "America/Los_Angeles"
converted_time = convert_utc_to_timezone(tz)
print("Converted Time: " + converted_time)

方案2:直接从Calendar读取目标时区字段

如果需要获取具体的时间数值(年、月、日等),可以直接从target_calendar中读取,这些字段已经是目标时区的对应值:

from java.util import Calendar, TimeZone

def convert_utc_to_timezone(tz):
    utc_calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC"))
    utc_time_in_millis = utc_calendar.getTimeInMillis()
    
    target_calendar = Calendar.getInstance(TimeZone.getTimeZone(tz))
    target_calendar.setTimeInMillis(utc_time_in_millis)
    
    # 提取目标时区的时间字段(注意Java月份从0开始)
    year = target_calendar.get(Calendar.YEAR)
    month = target_calendar.get(Calendar.MONTH) + 1
    day = target_calendar.get(Calendar.DAY_OF_MONTH)
    hour = target_calendar.get(Calendar.HOUR_OF_DAY)
    minute = target_calendar.get(Calendar.MINUTE)
    second = target_calendar.get(Calendar.SECOND)
    return f"{year}-{month:02d}-{day:02d} {hour:02d}:{minute:02d}:{second:02d} ({tz})"

tz = "America/Los_Angeles"
converted_time = convert_utc_to_timezone(tz)
print("Converted Time: " + converted_time)

内容的提问来源于stack exchange,提问作者ravvi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 02:40:02