如何将10:09:00 GMT + 0000转换为JST中的IST?

时间:2015-02-13 05:14:31

标签: javascript jquery

我正在开发网络应用程序,我们正在使用CK编辑器日历。我在其中执行以下代码获取Date & Time ..

代码:

var strDate = new Date(event.start);
var endDate = new Date(event.end);

var title='Event :'+event.title+' 
From :'+ event.start.toLocaleString() +'To:'+event.end.toLocaleString()+' By :';

输出:

Fri Feb 13 2015 10:37:00 GMT+0000 To :Fri Feb 13 2015 10:37:00 GMT+0000

期望输出:

在上面的输出中,它应该删除 GMT + 0000 替换正确的会话是否AM / PM

2 个答案:

答案 0 :(得分:2)

以下功能应该可以满足你的需要。它解析字符串以使用UTC值创建日期对象,然后调整UTC时间以获得IST(+0530),然后返回具有等效IST值的格式化字符串。

// Expects string in format: Fri Feb 13 2015 10:37:00 GMT+0000
// Assumes is UTC
// Returns values in IST
function parseAndFormat(s) {

  // Helper
  function z(n){return (n<10? "0":'') + n;}

  // Split into parts
  var b = s.split(/[ :]/);
  var m = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
  var days = ['Sun','Mon','Tue','Wed','Thu','Fri','Sat'];

  // Create a date based on UTC values
  var d = new Date(Date.UTC(b[3], m.indexOf(b[1]), b[2], b[4], b[5], b[6]));

  // Add 5 hours 30 minutes to the UTC time -> IST
  d.setUTCHours(d.getUTCHours() + 5, d.getUTCMinutes() + 30);

  // Format the hours for am/pm
  var hr = d.getUTCHours();
  var ap = hr > 11? 'PM' : 'AM';
  hr = hr%12 || 12;

  // Format the output based on the adjusted UTC time
  var dt = days[d.getUTCDay()] + ' '
           + m[d.getUTCMonth()] + ' '
           + d.getUTCDate() + ' '
           + d.getUTCFullYear() + ' '
           + z(hr) + ':'
           + z(d.getUTCMinutes()) + ':'
           + z(d.getUTCSeconds()) + ' '
           + ap;
  return dt;
}

console.log(parseAndFormat('Fri Feb 13 2015 10:37:00 GMT+0000')) // Fri Feb 13 2015 04:07:00 PM

console.log(parseAndFormat('Fri Feb 13 2015 20:37:00 GMT+0000')) // Sat Feb 14 2015 02:07:00 AM

此方法适用于本地值,除非夏令时妨碍。请注意,这始终是IST,它不会调整在使用它的地方观察到的夏令时。

修改

修正了12小时转换。

答案 1 :(得分:1)

你在标签中加入了jQuery,所以我假设你可以使用jQuery插件。 jQuery-dateFormat易于使用。

var date = new Date();
var fDate = $.format.date(date, 'E MMM dd yyyy hh:mm:ss a');
                          
$('#date').text(fDate);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script src="https://raw.githubusercontent.com/phstc/jquery-dateFormat/master/dist/jquery-dateFormat.min.js"></script>

<div id="date"></div>