时间戳如何转换为日期格式?MySQL、C#、JS时间戳转换方法
时间戳如何转换为日期格式?当初把日期格式转换为时间戳是为了更好的记录数据,现在如果想要看看当初时间戳被转换的时间,可以按照以下方法来实现,详情请阅读下文MySQL、C#、JS时间戳转换方法。
MySQL、C#、JS时间戳转换方法:
一、MySQL戳转换方法:
1、原理:
时间戳的原理是把时间格式转为十进制格式,这样就方便时间的计算,如:1377216000000 转化后是 2013年08月23日 。
2、步骤:
(1) 创建 DateUtilsl类。
(2) 输入代码:
- 01importjava.text.ParseException;
- 02importjava.text.SimpleDateFormat;
- 03importjava.util.Date;
- 04/*
- 05* @author Msquirrel
- 06*/
- 07public class DateUtils {
- 08privateSimpleDateFormat sf = null;
- 09/*获取系统时间 格式为:"yyyy/MM/dd "*/
- 10public static String getCurrentDate() {
- 11Date d = newDate();
- 12sf = newSimpleDateFormat("yyyy年MM月dd日");
- 13returnsf.format(d);
- 14}
- 15/*时间戳转换成字符窜*/
- 16public static String getDateToString(long time) {
- 17Date d = newDate(time);
- 18sf = newSimpleDateFormat("yyyy年MM月dd日");
- 19returnsf.format(d);
- 20}
- 21/*将字符串转为时间戳*/
- 22public static long getStringToDate(String time) {
- 23sdf = newSimpleDateFormat("yyyy年MM月dd日");
- 24Date date = newDate();
- 25try{
- 26date = sdf.parse(time);
- 27} catch(ParseException e) {
- 28// TODO Auto-generated catch block
- 29e.printStackTrace();
- 30}
- 31returndate.getTime();
- 32}
importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Date; /* * @author Msquirrel */ public class DateUtils { privateSimpleDateFormat sf = null; /*获取系统时间 格式为:"yyyy/MM/dd "*/ public static String getCurrentDate() { Date d = newDate(); sf = newSimpleDateFormat("yyyy年MM月dd日"); returnsf.format(d); } /*时间戳转换成字符窜*/ public static String getDateToString(long time) { Date d = newDate(time); sf = newSimpleDateFormat("yyyy年MM月dd日"); returnsf.format(d); } /*将字符串转为时间戳*/ public static long getStringToDate(String time) { sdf = newSimpleDateFormat("yyyy年MM月dd日"); Date date = newDate(); try{ date = sdf.parse(time); } catch(ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } returndate.getTime(); }
3、在对应使用的地方调用:
- 01DateUtils.getCurrentDate(); //获取系统当前时间
- 02DateUtils.getDateToString(时间戳); //时间戳转为时间格式
- 03DateUtils.getStringToDate("时间格式");//时间格式转为时间戳.
DateUtils.getCurrentDate(); //获取系统当前时间 DateUtils.getDateToString(时间戳); //时间戳转为时间格式 DateUtils.getStringToDate("时间格式");//时间格式转为时间戳.
二、C#时间戳转换方法:
C#的代码(加入了闰年):
注:.Net的DateTime对象返回的是100纳秒的时间单位,年份是从AD1开始计算的。
- 01class Program
- 02{
- 03// 定义必须变量
- 04const int _1M = 60; // 分钟
- 05const int _1H = _1M * 60; // 小时
- 06const int _1D = _1H * 24; // 天
- 07const long _1Y = _1D * 365; // 年(非闰年)
- 08const long _YS = _1Y * 3 + _1D * 366; // 一个闰年年度
- 09const long _30D = _1D * 30; // 30天(月)
- 10const long _31D = _1D * 31; // 31天(月)
- 11const long _28D = _1D * 28; // 28天(月)
- 12const long _29D = _1D * 29; // 29天(月)
- 13long[] NormalYear = { _31D, _28D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D }; // 年
- 14long[] LeapYear = { _31D, _29D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D }; // 闰年
- 15static void Main(string[] args)
- 16{
- 17Program P = new Program();
- 18System.Console.WriteLine(P.getDate(P.getTimeSpame()));
- 19DateTime T = DateTime.Now;
- 20System.Console.WriteLine(P.getTimeSpame() + " : " + P.getTimeSpame(T.Year, T.Month, T.Day, T.Hour, T.Minute, T.Second));
- 21System.Console.ReadKey();
- 22}
- 23private Program() {}
- 24public string getDate(long TimeSp)
- 25{
- 26// 年,月,天,小时,分钟,秒
- 27int year = 0;
- 28int month = 0;
- 29int day = 0;
- 30int hour = 0;
- 31int minute = 0;
- 32int second = 0;
- 33//DateTime now = DateTime.Now;
- 34//long TimeSp = getTimeSpame(); // 当前时间戳
- 35// 年
- 36int _y1 = (int)(TimeSp / _YS); // 获得按年度得到的年度
- 37TimeSp -= _YS * _y1; // 计算剩余秒
- 38int _y2 = (int)(TimeSp / _1Y); // 剩余年
- 39TimeSp -= _1Y * _y2;
- 40year = _y1 * 4 + _y2 + 1970;
- 41// 月
- 42long[] YearArr = isLeapYear(year) ? LeapYear : NormalYear; // 获取年的月度表
- 43month = 1; // 从1月开始计算
- 44for (int i = 0; i < YearArr.Length; i++)
- 45{
- 46if (TimeSp - YearArr[i] < 0) break;
- 47++month;
- 48TimeSp -= YearArr[i];
- 49}
- 50// 天
- 51day = (int)(TimeSp / _1D);
- 52TimeSp -= day * _1D;
- 53// 时
- 54hour = (int)(TimeSp / _1H);
- 55TimeSp -= hour * _1H;
- 56// 分
- 57minute = (int)(TimeSp / _1M);
- 58// 秒
- 59second = (int)(TimeSp % _1M);
- 60string DateStr = year + "年" + month + "月" + day + "日 " + hour + "点" + minute + "分" + second + "秒";
- 61return DateStr;
- 62}
- 63// 判断是否闰年
- 64private bool isLeapYear(int year)
- 65{
- 66return (year % 4 == 0 ? true : false);
- 67}
- 68// 获取当前时间戳 按1970年开始计算,精度为秒!
- 69private long getTimeSpame()
- 70{
- 71DateTime _Now = DateTime.Now;
- 72DateTime _1970 = new DateTime(1970, 1, 1);
- 73long _Sp = (_Now.Ticks - _1970.Ticks) / 10000000;
- 74return _Sp;
- 75}
- 76// 按既定格式把时间转成成时间戳
- 77private long getTimeSpame(int Year, int Month, int Day, int Hour, int Minute, int Second)
- 78{
- 79long val = 0;
- 80val += Second; // 秒
- 81val += Minute * _1M; // 分钟
- 82val += Hour * _1H; // 小时
- 83val += Day * _1D; // 天
- 84long[] YearArr = isLeapYear(Year) ? LeapYear : NormalYear;
- 85for (int i = 0; i < Month - 1; i++)
- 86{
- 87val += YearArr[i];
- 88}
- 89Year -= 1970;
- 90val += (Year / 4) * _YS;
- 91Year -= (int)(Year / 4) * 4;
- 92val += Year * _1Y;
- 93return val;
- 94}
- 95}
class Program { // 定义必须变量 const int _1M = 60; // 分钟 const int _1H = _1M * 60; // 小时 const int _1D = _1H * 24; // 天 const long _1Y = _1D * 365; // 年(非闰年) const long _YS = _1Y * 3 + _1D * 366; // 一个闰年年度 const long _30D = _1D * 30; // 30天(月) const long _31D = _1D * 31; // 31天(月) const long _28D = _1D * 28; // 28天(月) const long _29D = _1D * 29; // 29天(月) long[] NormalYear = { _31D, _28D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D }; // 年 long[] LeapYear = { _31D, _29D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D }; // 闰年 static void Main(string[] args) { Program P = new Program(); System.Console.WriteLine(P.getDate(P.getTimeSpame())); DateTime T = DateTime.Now; System.Console.WriteLine(P.getTimeSpame() + " : " + P.getTimeSpame(T.Year, T.Month, T.Day, T.Hour, T.Minute, T.Second)); System.Console.ReadKey(); } private Program() {} public string getDate(long TimeSp) { // 年,月,天,小时,分钟,秒 int year = 0; int month = 0; int day = 0; int hour = 0; int minute = 0; int second = 0; //DateTime now = DateTime.Now; //long TimeSp = getTimeSpame(); // 当前时间戳 // 年 int _y1 = (int)(TimeSp / _YS); // 获得按年度得到的年度 TimeSp -= _YS * _y1; // 计算剩余秒 int _y2 = (int)(TimeSp / _1Y); // 剩余年 TimeSp -= _1Y * _y2; year = _y1 * 4 + _y2 + 1970; // 月 long[] YearArr = isLeapYear(year) ? LeapYear : NormalYear; // 获取年的月度表 month = 1; // 从1月开始计算 for (int i = 0; i < YearArr.Length; i++) { if (TimeSp - YearArr[i] < 0) break; ++month; TimeSp -= YearArr[i]; } // 天 day = (int)(TimeSp / _1D); TimeSp -= day * _1D; // 时 hour = (int)(TimeSp / _1H); TimeSp -= hour * _1H; // 分 minute = (int)(TimeSp / _1M); // 秒 second = (int)(TimeSp % _1M); string DateStr = year + "年" + month + "月" + day + "日 " + hour + "点" + minute + "分" + second + "秒"; return DateStr; } // 判断是否闰年 private bool isLeapYear(int year) { return (year % 4 == 0 ? true : false); } // 获取当前时间戳 按1970年开始计算,精度为秒! private long getTimeSpame() { DateTime _Now = DateTime.Now; DateTime _1970 = new DateTime(1970, 1, 1); long _Sp = (_Now.Ticks - _1970.Ticks) / 10000000; return _Sp; } // 按既定格式把时间转成成时间戳 private long getTimeSpame(int Year, int Month, int Day, int Hour, int Minute, int Second) { long val = 0; val += Second; // 秒 val += Minute * _1M; // 分钟 val += Hour * _1H; // 小时 val += Day * _1D; // 天 long[] YearArr = isLeapYear(Year) ? LeapYear : NormalYear; for (int i = 0; i < Month - 1; i++) { val += YearArr[i]; } Year -= 1970; val += (Year / 4) * _YS; Year -= (int)(Year / 4) * 4; val += Year * _1Y; return val; } }
三、JS时间戳转换方法:
代码如下:
- 01// 定义常量
- 02var _1M = 60; // 分钟
- 03var _1H = _1M * 60; // 小时
- 04var _1D = _1H * 24; // 天
- 05var _1Y = _1D * 365; // 年(非闰年)
- 06var _YS = _1Y * 3 + _1D * 366; // 一个闰年年度
- 07var _30D = _1D * 30; // 30天(月)
- 08var _31D = _1D * 31; // 31天(月)
- 09var _28D = _1D * 28; // 28天(月)
- 10var _29D = _1D * 29; // 29天(月)
- 11var NormalYear = [ _31D, _28D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D ]; // 年
- 12var LeapYear = [ _31D, _29D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D ]; // 闰年
- 13var Now = new Date();
- 14TimeSp = Now.getTime() / 1000;
- 15//alert(Now.getTimezoneOffset()); // 时区差
- 16TimeSp += -1 * Now.getTimezoneOffset() * _1M; // 修正UTC
- 17// 年,月,天,小时,分钟,秒
- 18var year = month = day = hour = minute = second = 0;
- 19// 年
- 20var _y1 = parseInt(TimeSp / _YS); // 获得按年度得到的年度
- 21TimeSp -= _YS * _y1; // 计算剩余秒
- 22var _y2 = parseInt(TimeSp / _1Y); // 剩余年
- 23TimeSp -= _1Y * _y2;
- 24year = _y1 * 4 + _y2 + 1970;
- 25// 月
- 26var YearArr = year % 4 == 0 ? LeapYear : NormalYear; // 获取年的月度表
- 27month = 1; // 从1月开始计算
- 28for (i=0; i<YearArr.length; i++)
- 29{
- 30if (TimeSp - YearArr[i] < 0) break;
- 31++month;
- 32TimeSp -= YearArr[i];
- 33}
- 34// 天
- 35day = parseInt(TimeSp / _1D);
- 36TimeSp -= day * _1D;
- 37// 时
- 38hour = parseInt(TimeSp / _1H);
- 39TimeSp -= hour * _1H;
- 40// 分
- 41minute = parseInt(TimeSp / _1M);
- 42// 秒
- 43second = parseInt(TimeSp % _1M);
- 44var DateStr = year + "年" + month + "月" + day + "日 " + hour + "点" + minute + "分" + second + "秒";
- 45alert(DateStr);
// 定义常量 var _1M = 60; // 分钟 var _1H = _1M * 60; // 小时 var _1D = _1H * 24; // 天 var _1Y = _1D * 365; // 年(非闰年) var _YS = _1Y * 3 + _1D * 366; // 一个闰年年度 var _30D = _1D * 30; // 30天(月) var _31D = _1D * 31; // 31天(月) var _28D = _1D * 28; // 28天(月) var _29D = _1D * 29; // 29天(月) var NormalYear = [ _31D, _28D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D ]; // 年 var LeapYear = [ _31D, _29D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D ]; // 闰年 var Now = new Date(); TimeSp = Now.getTime() / 1000; //alert(Now.getTimezoneOffset()); // 时区差 TimeSp += -1 * Now.getTimezoneOffset() * _1M; // 修正UTC // 年,月,天,小时,分钟,秒 var year = month = day = hour = minute = second = 0; // 年 var _y1 = parseInt(TimeSp / _YS); // 获得按年度得到的年度 TimeSp -= _YS * _y1; // 计算剩余秒 var _y2 = parseInt(TimeSp / _1Y); // 剩余年 TimeSp -= _1Y * _y2; year = _y1 * 4 + _y2 + 1970; // 月 var YearArr = year % 4 == 0 ? LeapYear : NormalYear; // 获取年的月度表 month = 1; // 从1月开始计算 for (i=0; i<YearArr.length; i++) { if (TimeSp - YearArr[i] < 0) break; ++month; TimeSp -= YearArr[i]; } // 天 day = parseInt(TimeSp / _1D); TimeSp -= day * _1D; // 时 hour = parseInt(TimeSp / _1H); TimeSp -= hour * _1H; // 分 minute = parseInt(TimeSp / _1M); // 秒 second = parseInt(TimeSp % _1M); var DateStr = year + "年" + month + "月" + day + "日 " + hour + "点" + minute + "分" + second + "秒"; alert(DateStr);
注:JS的Date对象的getTime()方法返回的是UTC的时间戳,可以使用getTimezoneOffset()的方法来返回与UTC时差的分钟。
以上代码便是MySQL、C#、JS的时间戳转换方法介绍,因为闰年的存在,代码的使用前请阅读一下。
{else}时间戳如何转换为日期格式?当初把日期格式转换为时间戳是为了更好的记录数据,现在如果想要看看当初时间戳被转换的时间,可以按照以下方法来实现,详情请阅读下文MySQL、C#、JS时间戳转换方法。
MySQL、C#、JS时间戳转换方法:
一、MySQL戳转换方法:
1、原理:
时间戳的原理是把时间格式转为十进制格式,这样就方便时间的计算,如:1377216000000 转化后是 2013年08月23日 。
2、步骤:
(1) 创建 DateUtilsl类。
(2) 输入代码:
- 01importjava.text.ParseException;
- 02importjava.text.SimpleDateFormat;
- 03importjava.util.Date;
- 04/*
- 05* @author Msquirrel
- 06*/
- 07public class DateUtils {
- 08privateSimpleDateFormat sf = null;
- 09/*获取系统时间 格式为:"yyyy/MM/dd "*/
- 10public static String getCurrentDate() {
- 11Date d = newDate();
- 12sf = newSimpleDateFormat("yyyy年MM月dd日");
- 13returnsf.format(d);
- 14}
- 15/*时间戳转换成字符窜*/
- 16public static String getDateToString(long time) {
- 17Date d = newDate(time);
- 18sf = newSimpleDateFormat("yyyy年MM月dd日");
- 19returnsf.format(d);
- 20}
- 21/*将字符串转为时间戳*/
- 22public static long getStringToDate(String time) {
- 23sdf = newSimpleDateFormat("yyyy年MM月dd日");
- 24Date date = newDate();
- 25try{
- 26date = sdf.parse(time);
- 27} catch(ParseException e) {
- 28// TODO Auto-generated catch block
- 29e.printStackTrace();
- 30}
- 31returndate.getTime();
- 32}
importjava.text.ParseException; importjava.text.SimpleDateFormat; importjava.util.Date; /* * @author Msquirrel */ public class DateUtils { privateSimpleDateFormat sf = null; /*获取系统时间 格式为:"yyyy/MM/dd "*/ public static String getCurrentDate() { Date d = newDate(); sf = newSimpleDateFormat("yyyy年MM月dd日"); returnsf.format(d); } /*时间戳转换成字符窜*/ public static String getDateToString(long time) { Date d = newDate(time); sf = newSimpleDateFormat("yyyy年MM月dd日"); returnsf.format(d); } /*将字符串转为时间戳*/ public static long getStringToDate(String time) { sdf = newSimpleDateFormat("yyyy年MM月dd日"); Date date = newDate(); try{ date = sdf.parse(time); } catch(ParseException e) { // TODO Auto-generated catch block e.printStackTrace(); } returndate.getTime(); }
3、在对应使用的地方调用:
- 01DateUtils.getCurrentDate(); //获取系统当前时间
- 02DateUtils.getDateToString(时间戳); //时间戳转为时间格式
- 03DateUtils.getStringToDate("时间格式");//时间格式转为时间戳.
DateUtils.getCurrentDate(); //获取系统当前时间 DateUtils.getDateToString(时间戳); //时间戳转为时间格式 DateUtils.getStringToDate("时间格式");//时间格式转为时间戳.
二、C#时间戳转换方法:
C#的代码(加入了闰年):
注:.Net的DateTime对象返回的是100纳秒的时间单位,年份是从AD1开始计算的。
- 01class Program
- 02{
- 03// 定义必须变量
- 04const int _1M = 60; // 分钟
- 05const int _1H = _1M * 60; // 小时
- 06const int _1D = _1H * 24; // 天
- 07const long _1Y = _1D * 365; // 年(非闰年)
- 08const long _YS = _1Y * 3 + _1D * 366; // 一个闰年年度
- 09const long _30D = _1D * 30; // 30天(月)
- 10const long _31D = _1D * 31; // 31天(月)
- 11const long _28D = _1D * 28; // 28天(月)
- 12const long _29D = _1D * 29; // 29天(月)
- 13long[] NormalYear = { _31D, _28D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D }; // 年
- 14long[] LeapYear = { _31D, _29D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D }; // 闰年
- 15static void Main(string[] args)
- 16{
- 17Program P = new Program();
- 18System.Console.WriteLine(P.getDate(P.getTimeSpame()));
- 19DateTime T = DateTime.Now;
- 20System.Console.WriteLine(P.getTimeSpame() + " : " + P.getTimeSpame(T.Year, T.Month, T.Day, T.Hour, T.Minute, T.Second));
- 21System.Console.ReadKey();
- 22}
- 23private Program() {}
- 24public string getDate(long TimeSp)
- 25{
- 26// 年,月,天,小时,分钟,秒
- 27int year = 0;
- 28int month = 0;
- 29int day = 0;
- 30int hour = 0;
- 31int minute = 0;
- 32int second = 0;
- 33//DateTime now = DateTime.Now;
- 34//long TimeSp = getTimeSpame(); // 当前时间戳
- 35// 年
- 36int _y1 = (int)(TimeSp / _YS); // 获得按年度得到的年度
- 37TimeSp -= _YS * _y1; // 计算剩余秒
- 38int _y2 = (int)(TimeSp / _1Y); // 剩余年
- 39TimeSp -= _1Y * _y2;
- 40year = _y1 * 4 + _y2 + 1970;
- 41// 月
- 42long[] YearArr = isLeapYear(year) ? LeapYear : NormalYear; // 获取年的月度表
- 43month = 1; // 从1月开始计算
- 44for (int i = 0; i < YearArr.Length; i++)
- 45{
- 46if (TimeSp - YearArr[i] < 0) break;
- 47++month;
- 48TimeSp -= YearArr[i];
- 49}
- 50// 天
- 51day = (int)(TimeSp / _1D);
- 52TimeSp -= day * _1D;
- 53// 时
- 54hour = (int)(TimeSp / _1H);
- 55TimeSp -= hour * _1H;
- 56// 分
- 57minute = (int)(TimeSp / _1M);
- 58// 秒
- 59second = (int)(TimeSp % _1M);
- 60string DateStr = year + "年" + month + "月" + day + "日 " + hour + "点" + minute + "分" + second + "秒";
- 61return DateStr;
- 62}
- 63// 判断是否闰年
- 64private bool isLeapYear(int year)
- 65{
- 66return (year % 4 == 0 ? true : false);
- 67}
- 68// 获取当前时间戳 按1970年开始计算,精度为秒!
- 69private long getTimeSpame()
- 70{
- 71DateTime _Now = DateTime.Now;
- 72DateTime _1970 = new DateTime(1970, 1, 1);
- 73long _Sp = (_Now.Ticks - _1970.Ticks) / 10000000;
- 74return _Sp;
- 75}
- 76// 按既定格式把时间转成成时间戳
- 77private long getTimeSpame(int Year, int Month, int Day, int Hour, int Minute, int Second)
- 78{
- 79long val = 0;
- 80val += Second; // 秒
- 81val += Minute * _1M; // 分钟
- 82val += Hour * _1H; // 小时
- 83val += Day * _1D; // 天
- 84long[] YearArr = isLeapYear(Year) ? LeapYear : NormalYear;
- 85for (int i = 0; i < Month - 1; i++)
- 86{
- 87val += YearArr[i];
- 88}
- 89Year -= 1970;
- 90val += (Year / 4) * _YS;
- 91Year -= (int)(Year / 4) * 4;
- 92val += Year * _1Y;
- 93return val;
- 94}
- 95}
class Program { // 定义必须变量 const int _1M = 60; // 分钟 const int _1H = _1M * 60; // 小时 const int _1D = _1H * 24; // 天 const long _1Y = _1D * 365; // 年(非闰年) const long _YS = _1Y * 3 + _1D * 366; // 一个闰年年度 const long _30D = _1D * 30; // 30天(月) const long _31D = _1D * 31; // 31天(月) const long _28D = _1D * 28; // 28天(月) const long _29D = _1D * 29; // 29天(月) long[] NormalYear = { _31D, _28D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D }; // 年 long[] LeapYear = { _31D, _29D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D }; // 闰年 static void Main(string[] args) { Program P = new Program(); System.Console.WriteLine(P.getDate(P.getTimeSpame())); DateTime T = DateTime.Now; System.Console.WriteLine(P.getTimeSpame() + " : " + P.getTimeSpame(T.Year, T.Month, T.Day, T.Hour, T.Minute, T.Second)); System.Console.ReadKey(); } private Program() {} public string getDate(long TimeSp) { // 年,月,天,小时,分钟,秒 int year = 0; int month = 0; int day = 0; int hour = 0; int minute = 0; int second = 0; //DateTime now = DateTime.Now; //long TimeSp = getTimeSpame(); // 当前时间戳 // 年 int _y1 = (int)(TimeSp / _YS); // 获得按年度得到的年度 TimeSp -= _YS * _y1; // 计算剩余秒 int _y2 = (int)(TimeSp / _1Y); // 剩余年 TimeSp -= _1Y * _y2; year = _y1 * 4 + _y2 + 1970; // 月 long[] YearArr = isLeapYear(year) ? LeapYear : NormalYear; // 获取年的月度表 month = 1; // 从1月开始计算 for (int i = 0; i < YearArr.Length; i++) { if (TimeSp - YearArr[i] < 0) break; ++month; TimeSp -= YearArr[i]; } // 天 day = (int)(TimeSp / _1D); TimeSp -= day * _1D; // 时 hour = (int)(TimeSp / _1H); TimeSp -= hour * _1H; // 分 minute = (int)(TimeSp / _1M); // 秒 second = (int)(TimeSp % _1M); string DateStr = year + "年" + month + "月" + day + "日 " + hour + "点" + minute + "分" + second + "秒"; return DateStr; } // 判断是否闰年 private bool isLeapYear(int year) { return (year % 4 == 0 ? true : false); } // 获取当前时间戳 按1970年开始计算,精度为秒! private long getTimeSpame() { DateTime _Now = DateTime.Now; DateTime _1970 = new DateTime(1970, 1, 1); long _Sp = (_Now.Ticks - _1970.Ticks) / 10000000; return _Sp; } // 按既定格式把时间转成成时间戳 private long getTimeSpame(int Year, int Month, int Day, int Hour, int Minute, int Second) { long val = 0; val += Second; // 秒 val += Minute * _1M; // 分钟 val += Hour * _1H; // 小时 val += Day * _1D; // 天 long[] YearArr = isLeapYear(Year) ? LeapYear : NormalYear; for (int i = 0; i < Month - 1; i++) { val += YearArr[i]; } Year -= 1970; val += (Year / 4) * _YS; Year -= (int)(Year / 4) * 4; val += Year * _1Y; return val; } }
三、JS时间戳转换方法:
代码如下:
- 01// 定义常量
- 02var _1M = 60; // 分钟
- 03var _1H = _1M * 60; // 小时
- 04var _1D = _1H * 24; // 天
- 05var _1Y = _1D * 365; // 年(非闰年)
- 06var _YS = _1Y * 3 + _1D * 366; // 一个闰年年度
- 07var _30D = _1D * 30; // 30天(月)
- 08var _31D = _1D * 31; // 31天(月)
- 09var _28D = _1D * 28; // 28天(月)
- 10var _29D = _1D * 29; // 29天(月)
- 11var NormalYear = [ _31D, _28D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D ]; // 年
- 12var LeapYear = [ _31D, _29D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D ]; // 闰年
- 13var Now = new Date();
- 14TimeSp = Now.getTime() / 1000;
- 15//alert(Now.getTimezoneOffset()); // 时区差
- 16TimeSp += -1 * Now.getTimezoneOffset() * _1M; // 修正UTC
- 17// 年,月,天,小时,分钟,秒
- 18var year = month = day = hour = minute = second = 0;
- 19// 年
- 20var _y1 = parseInt(TimeSp / _YS); // 获得按年度得到的年度
- 21TimeSp -= _YS * _y1; // 计算剩余秒
- 22var _y2 = parseInt(TimeSp / _1Y); // 剩余年
- 23TimeSp -= _1Y * _y2;
- 24year = _y1 * 4 + _y2 + 1970;
- 25// 月
- 26var YearArr = year % 4 == 0 ? LeapYear : NormalYear; // 获取年的月度表
- 27month = 1; // 从1月开始计算
- 28for (i=0; i<YearArr.length; i++)
- 29{
- 30if (TimeSp - YearArr[i] < 0) break;
- 31++month;
- 32TimeSp -= YearArr[i];
- 33}
- 34// 天
- 35day = parseInt(TimeSp / _1D);
- 36TimeSp -= day * _1D;
- 37// 时
- 38hour = parseInt(TimeSp / _1H);
- 39TimeSp -= hour * _1H;
- 40// 分
- 41minute = parseInt(TimeSp / _1M);
- 42// 秒
- 43second = parseInt(TimeSp % _1M);
- 44var DateStr = year + "年" + month + "月" + day + "日 " + hour + "点" + minute + "分" + second + "秒";
- 45alert(DateStr);
// 定义常量 var _1M = 60; // 分钟 var _1H = _1M * 60; // 小时 var _1D = _1H * 24; // 天 var _1Y = _1D * 365; // 年(非闰年) var _YS = _1Y * 3 + _1D * 366; // 一个闰年年度 var _30D = _1D * 30; // 30天(月) var _31D = _1D * 31; // 31天(月) var _28D = _1D * 28; // 28天(月) var _29D = _1D * 29; // 29天(月) var NormalYear = [ _31D, _28D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D ]; // 年 var LeapYear = [ _31D, _29D, _31D, _30D, _31D, _30D, _31D, _31D, _30D, _31D, _30D, _31D ]; // 闰年 var Now = new Date(); TimeSp = Now.getTime() / 1000; //alert(Now.getTimezoneOffset()); // 时区差 TimeSp += -1 * Now.getTimezoneOffset() * _1M; // 修正UTC // 年,月,天,小时,分钟,秒 var year = month = day = hour = minute = second = 0; // 年 var _y1 = parseInt(TimeSp / _YS); // 获得按年度得到的年度 TimeSp -= _YS * _y1; // 计算剩余秒 var _y2 = parseInt(TimeSp / _1Y); // 剩余年 TimeSp -= _1Y * _y2; year = _y1 * 4 + _y2 + 1970; // 月 var YearArr = year % 4 == 0 ? LeapYear : NormalYear; // 获取年的月度表 month = 1; // 从1月开始计算 for (i=0; i<YearArr.length; i++) { if (TimeSp - YearArr[i] < 0) break; ++month; TimeSp -= YearArr[i]; } // 天 day = parseInt(TimeSp / _1D); TimeSp -= day * _1D; // 时 hour = parseInt(TimeSp / _1H); TimeSp -= hour * _1H; // 分 minute = parseInt(TimeSp / _1M); // 秒 second = parseInt(TimeSp % _1M); var DateStr = year + "年" + month + "月" + day + "日 " + hour + "点" + minute + "分" + second + "秒"; alert(DateStr);
注:JS的Date对象的getTime()方法返回的是UTC的时间戳,可以使用getTimezoneOffset()的方法来返回与UTC时差的分钟。
以上代码便是MySQL、C#、JS的时间戳转换方法介绍,因为闰年的存在,代码的使用前请阅读一下。