当我创建一个新Date对象时,它会初始化为当前时间但在本地时区.如何获得GMT中的当前日期和时间?
无论机器上设置的时区如何,我都需要强制任何与GMT/UTC相关的操作.在代码中有任何方便的方法吗?
为了澄清,我正在使用数据库服务器时间进行所有操作,但它是根据本地时区格式化的.
谢谢!
我得到一个datetime字段,当前在查询中:
SELECT DATE_FORMAT(x.date_entered, '%Y-%m-%d') AS date FROM x ORDER BY date ASC
Run Code Online (Sandbox Code Playgroud)
我想要做的是从该日期减去3个小时(GMT问题),但我不能用PHP来做,因为PHP只知道日期部分,而不是时间.
码:
SimpleDateFormat sdf = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss z");
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
System.out.println(new Date());
try {
String d = sdf.format(new Date());
System.out.println(d);
System.out.println(sdf.parse(d));
} catch (Exception e) {
e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates.
}
Run Code Online (Sandbox Code Playgroud)
输出:
Thu Aug 08 17:26:32 GMT+08:00 2013
2013.08.08 09:26:32 GMT
Thu Aug 08 17:26:32 GMT+08:00 2013
Run Code Online (Sandbox Code Playgroud)
请注意,format()格式Date正确格式为GMT,但parse()丢失了GMT详细信息.我知道我可以使用substring()并解决这个问题,但这种现象背后的原因是什么?
这是一个重复的问题,没有任何答案.
编辑:让我以另一种方式提出问题,检索Date对象的方式是什么,以便它始终在GMT中?
我需要能够将NSDate值转换为GMT日期.
如何将NSDate值转换为GMT格式的NSDate值,与iPhone设备使用的日期区域设置无关?
在.NET中,以下语句返回不同的值:
Response.Write(
TimeZoneInfo.ConvertTime(
DateTime.Parse("2010-07-01 5:30:00.000"),
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time"))
);
// displays 7/1/2010 1:30:00 PM
Run Code Online (Sandbox Code Playgroud)
..还有这个...
Response.Write(
TimeZoneInfo.ConvertTime(
DateTime.Parse("2010-07-01 5:30:00.000"),
TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
TimeZoneInfo.FindSystemTimeZoneById("UTC"))
);
// displays 7/1/2010 12:30:00 PM
Run Code Online (Sandbox Code Playgroud)
为什么是这样?我认为UTC和GMT标准时间相当.
更新
经过进一步测试,我发现以下内容似乎是等效的:
"世界标准时间"
"格林威治标准时间"
"摩洛哥标准时间"
而在夏季,以下情况有所不同:
"GMT标准时间"
也许我的问题应该是,为什么"格林威治标准时间"和"格林威治标准时间标准时间"有所不同?
结束更新
这五个陈述是否可以互换,或者是否有人知道其使用会产生不同结果的情况?从我收集的内容来看,它们是等价的,但我没有找到任何结论,GMT和UTC变体之间的潜在差异让我担心.
[NSTimeZone timeZoneWithName:@"GMT"];
[NSTimeZone timeZoneWithName:@"UTC"];
[NSTimeZone timeZoneWithAbbreviation:@"GMT"];
[NSTimeZone timeZoneWithAbbreviation:@"UTC"];
[NSTimeZone timeZoneForSecondsFromGMT:0];
Run Code Online (Sandbox Code Playgroud) 我有一个用JavaScript构建的日历,用PHP比较日期.JavaScript日期对象是使用PHP设置的,但是,当我比较未来日期时,它们似乎不同步.
PHP设置为GMT,JavaScript设置为UTC; 这些标准有何不同,这是否会导致问题?
UNIX时间戳总是在GMT?
我试着运行php函数time()
当我尝试从time()函数转换unix时间戳时,输出与计算机时间不相似.
谢谢
我需要在当地时间上午9:00向世界各地的用户发送电子邮件.服务器在英国.我能做的是在每个用户和服务器的时间之间设置一个时间差,如果DST不存在,这将完美地起作用.
这是一个例子来说明它:
当服务器在特定星期日凌晨2:00从GMT转到GMT +1(BST)时,这意味着John现在具有-6H的时差.
这种情况下我仍然可以通过更新所有用户的服务器的本地时间之外处理,但一旦我前进/后退的所有其他用户的时候,我还需要一种方法来检测时(时间和日期)的用户生活英国境外将(或不会)将当地时间改为可能的夏令时.
我需要一个PHP方法来了解/检测世界其他地方何时进入/退出夏令时.
gmt ×10
utc ×4
date ×3
java ×3
php ×3
timezone ×3
ios ×2
.net ×1
datetime ×1
dst ×1
javascript ×1
localization ×1
mysql ×1
nsdate ×1
nstimezone ×1
objective-c ×1
swift ×1
timestamp ×1
unix ×1