我有以下查询.它返回不同地区的当前时间.它适用于表V @ timezone_names中的大多数区域.但是此查询返回错误的结果:
我的查询是:
select CAST(FROM_TZ( CAST(current_date AS TIMESTAMP)
, sessiontimezone)
AT TIME ZONE 'America/Caracas' AS DATE)
from dual;
Run Code Online (Sandbox Code Playgroud)
您可以在此处查看不同国家/地区的当前时间.
假设我的设备在澳大利亚(GMT + 10:00)。
我有一个从API收到的日期“ 2016-04-22T17:45:00 + 02:00”。
我想在原始时区(GMT + 02:00)很好地显示它。
因此,我将SimpleDateFormat与“ yyyy-MM-dd'T'HH:mm:ssZZZZZ”一起使用。
String date = "2016-04-22T17:45:00+02:00";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZZZZZ");
Calendar cal = Calendar.getInstance();
cal.setTime(sdf.parse(date));
Run Code Online (Sandbox Code Playgroud)
但是不幸的是,我找不到一种显示日期的干净方法:
sdf.format(cal.getTime());
Run Code Online (Sandbox Code Playgroud)
使用设备时区。
因此,我“手动”解析了日期以提取时区以将其设置在日历中。
cal.setTimeZone(TimeZone.getTimeZone("GMT" + date.substring(date.length() - 6, date.length())));
Run Code Online (Sandbox Code Playgroud)
但这似乎并不能解决问题。
我怎样才能做到这一点?
我想获得当月的第一个和最后一个日期(如30日或31日).如何通过使用postgress sql查询获得此日期.
我有一个登录时间格式
31/Mar/2013:17:03:30 -0700
我想在时区将其转换为时间戳-70.我怎样才能做到这一点?
try {
String time = myMap.get("timestamp");
String splitTime[] = time.split("-");//input Timestamp 31/Mar/2013:17:03:30 -0700
Date date = new SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss").parse(splitTime[0]);
myMap.put("timestamp", String.valueOf(new Long(date.getTime() / 1000)));
} catch (ParseException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
我该如何使用这个时区?
尝试使用时区将UNIX时间戳转换为Oracle时间戳.期望看到不同的输出,但是datetime部分是相同的.
什么是拧?
select (timestamp '1970-01-01 00:00:00' + numtodsinterval(1204104116656/1000,'second')) at time zone tz_offset('EST') from dual;
Run Code Online (Sandbox Code Playgroud)
产出:27-FEB-08 09.21.56 .656000000 AM -05:00
select (timestamp '1970-01-01 00:00:00' + numtodsinterval(1204104116656/1000,'second')) at time zone tz_offset('PST') from dual;
Run Code Online (Sandbox Code Playgroud)
产出:27-FEB-08 09.21.56 .656000000 AM -07:00
为什么日期/时间部分是一样的?Oracle不做调整吗?
我可以欣赏我的 Postgres 语法的第二双眼睛。
数据库将时间戳存储在UTC. 我正在尝试将 from 转换UTC为 Eastern Daylight Time EDT,但输出不准确。
这是我的语法:
SELECT
to_char(((timestamp AT TIME ZONE 'UTC') AT TIME ZONE 'EDT'), 'MM/DD/YYYY HH24:MI')
FROM table_name
Run Code Online (Sandbox Code Playgroud)
记录时间戳:
09/10/2016 12:00
Run Code Online (Sandbox Code Playgroud)
查询输出:
09/10/2016 16:00
Run Code Online (Sandbox Code Playgroud)
期望输出:
09/10/2016 08:00
Run Code Online (Sandbox Code Playgroud)
谢谢你的协助。
我正在尝试OffsetDateTime("2019-01-14 21:10:00.02+03")使用JDBC与PostgreSQL 一起存储时区(+03)。但是,当使用sql查询检索数据时,我总是得到+00结果。有什么方法可以在postgres中使用datetime存储偏移量(+03)吗?
我想在 PowerShell CLI 中以及批处理脚本中实现我可以做的事情:
PS C:\Users\andreas.luckert> $timestamp = Get-Date -UFormat "%d-%m-%Y--%R-UTC%Z" | ForEach-Object { $_ -replace ":", "." }
PS C:\Users\andreas.luckert> echo $timestamp
26-11-2021--15.55-UTC+01
Run Code Online (Sandbox Code Playgroud)
现在,在我的批处理脚本中,我尝试了类似于以下的方法
SET _timestamp=('Get-Date -UFormat "%d-%m-%Y--%R-UTC%Z" | ForEach-Object { $_ -replace ":", "." }')
Run Code Online (Sandbox Code Playgroud)
然而,它不起作用。
像这样的解决方案对我来说看起来有点老套,批处理变量的一般说明在这种情况下没有帮助,并且与我在一开始提到的漂亮干净的 PowerShell 命令相比,所有这些方法在语法方面都非常丑陋。此外,它们都不包括时区,这对我来说很重要。
powershell timestamp batch-file batch-processing timestamp-with-timezone
我有一个时间戳
System.currentTimeMillis()
Run Code Online (Sandbox Code Playgroud)
问题
我试图将时间转换为以下时区,无论代码运行的时间和位置如何:
例如,给定一个unix时间戳,如何使用EDT时区找到新的unix时间戳"同一周的星期一"?我该怎么做,这样它总会得到相同的结果?