我正在寻找一种以a -> a
为时区的本地时间转换Javascript日期对象的方法:
let centerCalc = CGRect(x: 5, y: frame.height - 45, width: 40, height: 40)
compassView.center = CGPoint(x: centerCalc.midX, y: centerCalc.midY)
我想将其转换为America/New_York
中的日期对象。
2019-01-04T00:00:00.000Z
UTC
此处仍返回与输入2019-01-04T05:00:00.000Z
相同的结果。
const timezone = 'America/New_York';
const localMidnight = new Date(Date.UTC(2019, 0, 4)) // 2019-01-04T00:00:00.000Z
moment.tz(localMidnight, timezone).utc().toDate()
答案 0 :(得分:0)
问题似乎出在创建日期的格式上,在此示例中,您可以看到.toISOString()
在末尾添加了 Z ,而对于{{1 }}方法有效,您需要从格式中删除该字母。
下面是一个在moment.tz
中创建新日期并将时区更改为UTC的示例
'America/New_York'
const timezone = 'America/New_York';
const localMidnight = new Date(2019, 01, 04);
console.log("Original time:")
console.log(localMidnight.toISOString());
console.log("Converted to UTC:");
console.log(moment.tz(localMidnight.toISOString().slice(0, -1), timezone).utc().format());
答案 1 :(得分:0)
要获得预期结果,请使用以下选项
语法-时刻(日期).tz(时区).utc()。format()
对于格式-YYYY-MM-DDTHH:mm:ss.SSSZ,请使用 toISOString ()代替 format()
const timezone = 'America/New_York';
const localMidnight = new Date(Date.UTC(2019, 0, 4))
console.log("newTime in utc", moment(localMidnight).tz(timezone).utc().format())
console.log("newTime", moment(localMidnight).tz(timezone).utc().toISOString())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.23.0/moment.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.23/moment-timezone-with-data.js"></script>
答案 2 :(得分:0)
我想您想要的是基于特定时区中的日期和时间创建日期,然后为UTC创建ISO 8601时间戳。
下面的评论应该足够了,但请问是否需要更多帮助。
// Create a moment for midnight in America/New_York
var newYork = moment.tz("2019-01-04 00:00", "America/New_York");
// Create an ISO 8601 timestamp UTC
console.log(newYork.utc().format()); // 2019-01-04T05:00:00Z
<script type="text/javascript" src="http://momentjs.com/downloads/moment.min.js"></script>
<script type="text/javascript" src="http://momentjs.com/downloads/moment-timezone-with-data.min.js"></script>
请注意,调用 utc 会触发UTC模式,该模式除了格式为ISO 8601和UTC之外,还具有side effects。