Index: mantid/Framework/DataHandling/inc/MantidDataHandling/LoadCSNSNexus.h
===================================================================
--- mantid/Framework/DataHandling/inc/MantidDataHandling/LoadCSNSNexus.h	(revision 7ab2b1d7eafc3804b21fc2248631db255a191234)
+++ mantid/Framework/DataHandling/inc/MantidDataHandling/LoadCSNSNexus.h	(revision 52486106e0b8844f1a5e09a5d98c176939ff5161)
@@ -167,5 +167,5 @@
 
     /// get event data
-    std::multimap<int, std::pair<float,float>> getEventData(::NeXus::File *file, bool bm);
+    std::multimap<int, std::pair<int64_t, double>> getEventData(::NeXus::File *file, int64_t startTime, bool bm);
 
     /// get spectra mapping
Index: mantid/Framework/DataHandling/src/LoadCSNSNexus.cpp
===================================================================
--- mantid/Framework/DataHandling/src/LoadCSNSNexus.cpp	(revision 7ab2b1d7eafc3804b21fc2248631db255a191234)
+++ mantid/Framework/DataHandling/src/LoadCSNSNexus.cpp	(revision 52486106e0b8844f1a5e09a5d98c176939ff5161)
@@ -426,4 +426,5 @@
 * Return the event data
 * @param[in] file :: nxs file
+* @param[in] startTime :: start time in nxs file
 * @param[in] bm :: true is bank and false is monitor
 * @return eventData :: event data include event_pixel_id, pulse_time,tof.
@@ -431,11 +432,11 @@
 */
 //std::vector<std::vector< std::pair<float,float> > > LoadCSNSNexus::getEventData(::NeXus::File *file, const std::string &bankName)
-std::multimap<int, std::pair<float,float>> LoadCSNSNexus::getEventData(::NeXus::File *file, bool bm)
+std::multimap<int, std::pair<int64_t, double>> LoadCSNSNexus::getEventData(::NeXus::File *file, int64_t startTime, bool bm)
 {
     size_t numBank = m_bankNames.size();
     size_t numMonitor = m_monitorNames.size();
-    std::multimap<int, std::pair<float,float>> eventData;
+    std::multimap<int, std::pair<int64_t, double>> eventData;
     int specNo;
-
+    int64_t _pTime;
     std::map<std::string, std::string> entries;
     std::map<std::string, std::string>::iterator it;
@@ -444,6 +445,6 @@
     std::vector<float> _timeOfFlight;
     std::vector<float> _pulseTime;
-    std::map<int, int> spectraMapping = getSpectraMapping(file, "bank0");
-    std::pair<float,float> _pTOF;
+    std::map<int, int> spectraMapping = getSpectraMapping(file, bm);
+    std::pair<int64_t,double> _pTOF;
 
     file->openGroup(m_entryName, "NXentry");
@@ -466,10 +467,11 @@
                     file->readData("event_time_of_flight",_timeOfFlight);
                     file->readData("event_pulse_time",_pulseTime);
-
+                    std::vector<double>_tof(_timeOfFlight.begin(),_timeOfFlight.end());
                     for (size_t i=0; i<_pixelId.size(); ++i)
                     {
                         specNo = spectraMapping[_pixelId[i]];
-                        _pTOF = std::make_pair(_pulseTime[i],_timeOfFlight[i]);
-                        eventData.insert(std::multimap<int, std::pair<float,float>>::value_type(specNo,_pTOF));
+                        _pTime = startTime + int64_t(_pulseTime[i]*1000);                 
+                        _pTOF = std::make_pair(_pTime,_tof[i]);
+                        eventData.insert(std::multimap<int, std::pair<int64_t, double>>::value_type(specNo,_pTOF));
                     }
                     file->closeGroup();
@@ -487,11 +489,12 @@
                 file->readData("event_time_of_flight",_timeOfFlight);
                 file->readData("event_pulse_time",_pulseTime);
-                
-                for (size_t i=0; i<_pixelId.size(); ++i)
-                {
-                    specNo = spectraMapping[_pixelId[i]];
-                    _pTOF = std::make_pair(_pulseTime[i],_timeOfFlight[i]);
-                    eventData.insert(std::multimap<int, std::pair<float,float>>::value_type(specNo,_pTOF));
-                }
+                std::vector<double>_tof(_timeOfFlight.begin(),_timeOfFlight.end());
+                    for (size_t i=0; i<_pixelId.size(); ++i)
+                    {
+                        specNo = spectraMapping[_pixelId[i]];
+                        _pTime = startTime + int64_t(_pulseTime[i]*1000);
+                        _pTOF = std::make_pair(_pTime,_tof[i]);
+                        eventData.insert(std::multimap<int, std::pair<int64_t, double>>::value_type(specNo,_pTOF));
+                    }
                 file->closeGroup();
             }
@@ -512,10 +515,11 @@
                     file->readData("event_time_of_flight",_timeOfFlight);
                     file->readData("event_pulse_time",_pulseTime);
-
+                    std::vector<double>_tof(_timeOfFlight.begin(),_timeOfFlight.end());
                     for (size_t i=0; i<_pixelId.size(); ++i)
                     {
                         specNo = spectraMapping[_pixelId[i]];
-                        _pTOF = std::make_pair(_pulseTime[i],_timeOfFlight[i]);
-                        eventData.insert(std::multimap<int, std::pair<float,float>>::value_type(specNo,_pTOF));
+                        _pTime = startTime + int64_t(_pulseTime[i]*1000);
+                        _pTOF = std::make_pair(_pTime,_tof[i]);
+                        eventData.insert(std::multimap<int, std::pair<int64_t, double>>::value_type(specNo,_pTOF));
                     }
                     file->closeGroup();
@@ -532,10 +536,12 @@
                 file->readData("event_time_of_flight",_timeOfFlight);
                 file->readData("event_pulse_time",_pulseTime);
-
+                std::vector<double>_tof(_timeOfFlight.begin(),_timeOfFlight.end());
+                //cout<<"pixelId total number is: "<<_pixelId.size()<<enld;
                 for (size_t i=0; i<_pixelId.size(); ++i)
                 {
                     specNo = spectraMapping[_pixelId[i]];
-                    _pTOF = std::make_pair(_pulseTime[i],_timeOfFlight[i]);
-                    eventData.insert(std::multimap<int, std::pair<float,float>>::value_type(specNo,_pTOF));
+                    _pTime = startTime + int64_t(_pulseTime[i]*1000);
+                    _pTOF = std::make_pair(_pTime,_tof[i]);
+                    eventData.insert(std::multimap<int, std::pair<int64_t, double>>::value_type(specNo,_pTOF));
                 }
                 file->closeGroup();
@@ -1108,29 +1114,4 @@
     return Kernel::DateAndTime(endTime);
 }
-
-//-------------------------------------------------------------------------------------------------
-/**
-* Return the name of instrument
-* @param[in] filename :: nxs file name
-* @return instrumentName :: the name of instrument
-*/
-std::string LoadCSNSNexus::getInstrumentName(::NeXus::File *file)
-{
-    std::string instrumentName;    // Open the default data group 'entry'
-    file->openGroup(m_entryName, "NXentry");
-    std::map<std::string, std::string> entries = file->getEntries();
-    if (entries.find("instrument_name") != entries.end())
-    {
-        file->readData("instrument_name", instrumentName);
-        return instrumentName;
-    }
-    else
-    {
-        throw std::runtime_error("No Instrument Name in the NXS file!");
-    }
-    file->closeGroup();
-    return instrumentName;
-}
-
 //-------------------------------------------------------------------------------------------------
 /**
@@ -1268,4 +1249,12 @@
     Kernel::DateAndTime start_time = getStartTime(file);
     Kernel::DateAndTime end_time = getEndTime(file);
+    int64_t sTime = start_time.totalNanoseconds();
+
+    //Kernel::DateAndTime timetest(0);
+    //std::cout<<"timetest is: "<<timetest<<std::endl; 
+    //Kernel::DateAndTime timetest1("2016-06-01T10:34:53+08:00",true);
+    //cout<<"the year of timetest1 is: "<<timetest1.year()<<endl;
+    //cout<<"the total nanoseconds is "<<timetest1.totalNanoseconds()<<endl;
+    //cout<<"the total nanoseconds of start time is "<<start_time.totalNanoseconds()<<endl;
     //cout<<"start_time is: " <<start_time<<"\n";
     //cout<<"end_time is: " <<end_time<<"\n";    
@@ -1274,7 +1263,4 @@
     CSNSsample m_sampleInfo = getSampleInfo(file);
     WS->setTitle(m_sampleInfo.name);
-    //std::string instrumentName = getInstrumentName(file);
-    //WS->setInstrument(instrumentName); //only eventWorkspaceCollection can do this!
-    
     // set units in X and Y axis 
     WS->getAxis(0)->unit() = Kernel::UnitFactory::Instance().create("TOF");    
@@ -1283,12 +1269,12 @@
     //load event data
     std::map<int, int> spectraMapping = getSpectraMapping(file, true);
-//    std::multimap<int,std::pair<float,float>> m_eventData = getEventData(file,true);
+    std::multimap<int,std::pair<int64_t,double>> m_eventData = getEventData(file, sTime, true);
 
     std::cout<<"total number of spectrum is: "<<spectraMapping.size()<<std::endl;
-    std::cout<<"Mapping of detector ID 1030  to spectrum no is: "<<spectraMapping[1030]<<std::endl;
-
-//    typedef std::multimap<int, std::pair<float,float>>::iterator it_multimap;
-//    it_multimap _specNo = m_eventData.find(506);
-//    std::cout<<"spectra No "<<_specNo->first<<" has "<<m_eventData.count(506)<<" event datas! They are: "<<std::endl;
+    std::cout<<"Mapping of detector ID 52  to spectrum no is: "<<spectraMapping[52]<<std::endl;
+
+    typedef std::multimap<int, std::pair<int64_t,double>>::iterator it_multimap;
+    it_multimap _specNo = m_eventData.find(53);
+    std::cout<<"spectra No "<<_specNo->first<<" has "<<m_eventData.count(53)<<" event datas! They are: "<<std::endl;
 
 
